Продолжение этого вопроса :
Я пытаюсь встроить коллекцию форм, как описано в официальных документах здесь . К сожалению, я получаю следующее исключение:
Ожидается, что данные вида формы будут экземпляром класса Acme \ SiteBundle \ Entity \ BlogPost, но являются (n) массивом. Вы можете избежать этой ошибки, установив опцию «data_class» равной нулю или добавив трансформатор вида, который преобразует массив (n) в экземпляр Acme \ SiteBundle \ Entity \ BlogPost.
- Развертывание Doctrine в тестовой среде без консольного доступа
- Создание единого объекта из существующей базы данных с помощью symfony2 и доктрины
- За кулисами: Как ОРМ «думает»?
- Функциональный тест - служба Mock не сохраняется в сервисном контейнере
- Как повторно сохранить объект как другую строку в Doctrine 2
- Лучший способ хранения сообщений и файлов чата
Что странно, так как я полагаю, что я следовал официальным документам до «t»:
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')); } }
Связь, определенная в 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;
Итак, я не уверен, где я ошибся. Есть идеи?