是否可以使用symfony2中的FormBuilder生成动态表单?

时间:2012-05-11 08:11:21

标签: symfony

如此处http://symfony.com/doc/current/cookbook/form/dynamic_form_generation.html所示,可以使用数据事件动态生成表单。

在给定的示例中,使用 FormFactory 添加新字段,这比 buildForm 方法中提供的 FormBuilder 稍微方便一点

有一种方法可以在 buildForm 方法中构建动态表单:

$this->createForm(new MyFormType(), $object);

buildForm 方法中,你将options数组中的对象作为'data',从而提供了一种根据数据以dinamically方式构建表单的方法。

这不如数据事件那么强大(请求绑定就是一个例子)。

有没有办法在 FormBuilder 中使用数据事件?我认为无论您是构建静态表单还是动态表单,表单构建都应该是无缝的。

1 个答案:

答案 0 :(得分:0)

您可以创建字段:

public function buildView(FormView $view, FormInterface $form)
{
    $data = $form->getClientData();
    if ($data && is_array($data) && count($data)) {
        $children = $form->getChildren();
        foreach ($data as $k => $v) {
            $children[$k]->add($this->form_factory->createNamed('hidden', 'name', $v))
        }
    }
}