提供收集子表单中的默认数据

时间:2015-08-07 01:20:30

标签: forms symfony

我在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(对于编辑模式)填充我的集合,并将数据关联到正确的字段中。

有什么想法吗?

1 个答案:

答案 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顾名思义就是表单类型,而不是数据结构。你应该删除它......

希望这会有所帮助......