2

最後に行われた編集の日時エントリを含む html 選択フィールドを作成したいと思います。データベース内の他のフィールドを取得する場合、これは機能しますが、datetime では機能しません。

私が持っているフォームタイプで

class MemberlistType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('CreatedAt', 'entity', array(
                'mapped' => false,
                'class' => 'TestProject\TestBundle\Entity\Memberlist',
                'property' => 'created_at'
                ))

`

私が持っているビューでは

{{form_label(form.children.memberlists[0].children.CreatedAt}}
{{form_widget(form.children.memberlists[0].children.CreatedAt}}
{{form_errors(form.children.memberlists[0].children.CreatedAt)}}

そして私は得る:

An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object 
of class DateTime could not be converted to string in /var/www/symfony/vendor/symfony/symfony
/src/Symfony/Component/Translation/Translator.php line 188") in 
TestprojectTestBundle:Default:updateData.html.twig at line 77

この日時を簡単な方法で文字列に変換するにはどうすればよいですか?

4

2 に答える 2

1

小枝フィルターを「日付」と呼ぶことができます。

{{form_label(form.children.memberlists[0].children.CreatedAt|date("m/d/Y")}}
{{form_widget(form.children.memberlists[0].children.CreatedAt|date("m/d/Y")}}
{{form_errors(form.children.memberlists[0].children.CreatedAt|date("m/d/Y"))}}

編集、私は質問を読み違えました... ZhukVが言ったように、ViewTransformerが必要です:

namespace My\Bundle\Form\Transformers;

class DateToStringTransformer
{
    public function transform($dateObj)
    {
        if (null === $dateObj) {
            return "";
        }

        return $dateObj->format('m/d/Y');
    }

    public function reverseTransform($date)
    {
        if ($date === "") {
            return null;
        }
        $dateObj = new \DateTime($issue);

        return $dateObj;
    }
}

次に、フォームで呼び出します。

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $transformer = new new DateToStringTransformer();
    $builder
        ->add(
            $builder->create('CreatedAt', 'entity', array(
                'mapped' => false,
                'class' => 'TestProject\TestBundle\Entity\Memberlist',
                'property' => 'created_at'
            ))->addViewTransformer($transformer)
        )

詳細はこちら: http://symfony.com/fr/doc/current/cookbook/form/data_transformers.html

于 2013-09-08T13:46:11.363 に答える