0

この質問の続き:

公式ドキュメントhereで説明されているように、フォームのコレクションを埋め込もうとしています。残念ながら、次の例外が発生します。

フォームのビュー データはクラス Acme\SiteBundle\Entity\BlogPost のインスタンスであると予想されますが、(n) 配列です。「data_class」オプションを null に設定するか、(n) 配列を Acme\SiteBundle\Entity\BlogPost のインスタンスに変換するビュー トランスフォーマーを追加することで、このエラーを回避できます。

公式ドキュメントに従って「t」にしたと思うので、これは奇妙です。

ブログ投稿タイプ:

class BlogPostType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // static text fields/attrs (title, body, etc)
        $builder->add('comments', 'collection', array('type' => new CommentType()));
    }

    public function getName()
    {
        return 'blogpost';
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array('data_class' => 'Acme\SiteBundle\Entity\BlogPost'));
    }
}

コメントの種類:

class CommentType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('commentId', 'hidden');
        $builder->add('commentBody','text',array('label' => 'Comment:','attr'=>array('size'=>80,'class'=>'form-item-input form-type-texfield')));
    }

    public function getName()
    {
        return 'comment';
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array('data_class' => 'Acme\SiteBundle\Entity\Comment'));
    }
}

BlogPost で定義されている関係:

/**
 * @var \Acme\SiteBundle\Entity\Comment.php
 *
 * @ORM\OneToMany(targetEntity="Comment", mappedBy="blogpost",
    cascade={"all"},orphanRemoval=true)
 * @ORM\OrderBy({"commentId" = "ASC"})
 */
private $comments;

そしてコメントで:

/**
 * @var BlogPost
 *
 * @ORM\ManyToOne(targetEntity="BlogPost", inversedBy="comments")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="blog_id", referencedColumnName="id")
 * })
 */
private $blogPost;

だから、私はどこが間違っていたのか分かりません。何か案は?

4

1 に答える 1

1

私はばかだったことが判明し (大きな驚き)、フォーム ビルダーに配列を渡していました。以前は機能していた古いコードが、現在は機能していません。ウィー!

于 2013-04-15T13:45:02.010 に答える