文字列またはDateTimeオブジェクトのいずれかを入力として受け入れるカスタムフィールドが必要です。いくつかの議論の後、私はDataTransformersが進むべき道であると判断しました。クックブックの指示に従いましたが、次のエラーが発生します。
キャッチ可能な致命的なエラー:Symfony \ Component \ Form \ FormFactory :: loadTypeExtensions()に渡された引数1は、/ Applications/MAMPで呼び出されたYanic\HomeBundle \ Form \ DataTransformer\DateToStringTransformerのインスタンスであるインターフェースSymfony\Component \ Form\FormTypeInterfaceを実装する必要があります/htdocs/symfony-standard-2.1/vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php行320で、/ Applications / MAMP / htdocs / symfony-standard-2.1 / vendor / symfony/symfonyで定義されています/src/Symfony/Component/Form/FormFactory.php行332
FormTypeを期待しているようですが、ドキュメントにはそれは必要ないはずだと書かれています。
これが私が使用しているコードです。
UsersType.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$transformer = new \Yanic\HomeBundle\Form\DataTransformer\DateToStringTransformer();
$builder
->add('username')
->add('password','password',
array(
'required' => false
))
->add('email')
->addViewTransformer( $transformer )
->add('created', 'datetimeToString', array(
'disabled' => true,
))
->add('modified', 'datetimeToString', array(
'disabled' => true,
))
->add('isActive', null, array(
'label' => 'Is active?',
'required' => false
))
->add('lastLogin', null, array(
'empty_data' => 'never',
'widget' => 'single_text',
'read_only' => true,
'label' => 'Last login'
))
->add('modifiedBy', null, array(
'label' => 'Modified by',
'read_only' => true
))
->add('groups')
;
}
DateToStringTransformer.php
namespace Yanic\HomeBundle\Form\DataTransformer;
use Symfony\Component\Form\DataTransformerInterface;
use Symfony\Component\Form\Exception\TransformationFailedException;
class DateToStringTransformer implements DataTransformerInterface
{
/**
* Transforms an DateTime object to a string.
*
* @param \DateTime|null $issue
* @return string
*/
public function transform($date)
{
if (null === $date) {
return "never";
}
return $date->format('d-m-Y H:i');
}
/**
* Transforms a string (date formatted) to an object (\DateTime).
*
* @param string $date
* @return \DateTime|null
* @throws TransformationFailedException
*/
public function reverseTransform($number)
{
return $number;
}
}
services.yml
services:
form.dataTransformer.datetimeToString:
class: Yanic\HomeBundle\Form\DataTransformer\DateToStringTransformer
tags:
- { name: form.type, alias: datetimeToString }
私は何が間違っているのですか?
ああ、私はSymfony2.1Beta2を使用しています