我在symfony 2中有一个带有原型功能的嵌套表单。这是包含该集合的父表单:
$builder
->add('rooms', 'collection', array(
'type' => new RoomForm(),
'allow_add' => true,
'allow_delete' => true,
'data' => array(new RoomForm()),
))
如您所见,未定义data_class
。表单提交后$form->getData()
正确返回关联数组。
RoomForm
是一个由两个字段组成的简单表单类:
$builder
->add(
$builder->create('dateAvailabilityStart', 'text', array(
'label' => 'label.from'
)))
->add(
$builder->create('dateAvailabilityEnd', 'text', array(
'label' => 'label.until'
)))
我想找到一种方法,用现有的RoomForm
(对于编辑模式)填充我的集合,并将数据关联到正确的字段中。
有什么想法吗?
答案 0 :(得分:2)
您可以在控制器内执行此操作。鉴于以上表单类型被命名为RoomFormCollection
,您可以执行以下操作:
// This should be an array
$rooms = ... // Either from database or...
$form = $this->createForm(new RoomFormCollection(), array(
'rooms' => rooms
));
另一件事,'data' => array(new RoomForm()),
无效。 RoomForm
顾名思义就是表单类型,而不是数据结构。你应该删除它......
希望这会有所帮助......