如此处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 中使用数据事件?我认为无论您是构建静态表单还是动态表单,表单构建都应该是无缝的。
答案 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))
}
}
}