2013-04-15 3 views
0

Продолжение this question:Symfony2 исключение при попытке вставить коллекцию форм

Я пытаюсь встроить коллекцию форм, как описано в официальной документации here. К сожалению, я получаю следующее исключение:

Ожидается, что данные вида формы будут экземпляром класса Acme \ SiteBundle \ Entity \ BlogPost, но являются (n) массивом. Вы можете избежать этой ошибки, установив опцию «data_class» равной нулю или добавив трансформатор вида, который преобразует массив (n) в экземпляр Acme \ SiteBundle \ Entity \ BlogPost.

Что странно, так как я считаю, что я следовал официальные документы на 'т':

BlogPostType:

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')); 
    } 
} 

отношений, как это определено в Основная цель страницы:

/** 
* @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; 

Таким образом, я не знаю, где я не так. Есть идеи?

ответ

1

Оказывается, я был идиотом (там был большой сюрприз) и передавал построитель форм массив. Старый код, который раньше работал, разбивал его сейчас. Whee!

Смежные вопросы