2

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

在给定的示例中,新字段添加了一个FormFactory,这比buildForm方法中提供的FormBuilder方便一些。

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

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

buildForm方法中,您可以将选项数组中的对象作为“数据”,从而提供一种根据数据动态构建表单的方法。

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

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

4

1 回答 1

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))
        }
    }
}
于 2012-05-13T18:48:53.667 回答