我正在尝试显示带有集合的表单。该集合应显示一个空的子表单。由于项目性质,我不能依赖 JavaScript 来做到这一点。
谷歌搜索没有帮助,我似乎没有通过向集合字段添加一个空实体来工作。
到目前为止我所拥有的:
public function indexAction($id)
{
$em = $this->getDoctrine()->getManager();
$event = $em->getRepository('EventBundle:EventDynamicForm')->find($id);
$entity = new Booking();
$entity->addParticipant( new Participant() );
$form = $this->createForm(new BookingType(), $entity);
return array(
'event' => $event,
'edit_form' => $form->createView()
);
}
在 BookingType.php buildForm()
$builder
->add('Participants', 'collection')
在 Twig 模板中
{{ form_row(edit_form.Participants.0.companyName) }}
如果我把这行 $entity->addParticipant( new Participant() ); 在 indexAction() 中,我收到一条错误消息:
表单的视图数据应为标量、数组或 \ArrayAccess 的实例类型,但它是类 Yanic\EventBundle\Entity\Participant 的实例。您可以通过将“data_class”选项设置为“Yanic\EventBundle\Entity\Participant”或添加一个视图转换器来避免此错误,将类 Yanic\EventBundle\Entity\Participant 的实例转换为标量、数组或 \ 的实例数组访问。
如果我删除 Twig 抱怨的上述行:
/Applications/MAMP/htdocs/symfony-standard-2.1/src/Yanic/EventBundle/Resources/views/Booking/index.html.twig 中不存在对象“Symfony\Component\Form\FormView”的方法“0”第 27 行
编辑: addParticipant 是由教义生成的默认方法:generate:entities 命令
/**
* Add Participants
*
* @param \Yanic\EventBundle\Entity\Participant $participants
* @return Booking
*/
public function addParticipant(\Yanic\EventBundle\Entity\Participant $participants)
{
$this->Participants[] = $participants;
return $this;
}
我确定我做错了什么,但找不到线索:-(