Symfony:将小部件添加到已定义的表单中

时间:2011-07-19 10:10:18

标签: forms symfony1 widget

我想在已定义的表单中添加小部件(复选框)(使用configure方法)。

我无法在窗体的定义中添加它们,因为窗口小部件的数量会有所不同(根据对象)。

我看到两种方法:

将变量传递给表单的configure方法,或者使用嵌入表单。

但哪一个是正确的方法?还有其他解决方案吗?

谢谢

2 个答案:

答案 0 :(得分:1)

正确的方法是将对象直接传递给选项。在表单中,您可以使用$this->getOption方法检索传递的选项。

答案 1 :(得分:1)

我同意Don Pinkster传递选项并使用它来配置configure()方法中的表单。

但如果需要它或在实例化课程时无法获得价值,您可以在任何地方使用:

$form->getWidgetSchema()->offsetSet($name, $widget);
$form->getValidatorSchema()->offsetSet($name, $validator)

您使用嵌入式表单或窗口小部件的事实不会发生太大变化,因为您可以在最初配置表单后执行此操作:

$form->embedForm($name, $form2);

对于一个复选框,我没有看到使用嵌入式表单的优点。 在这两种情况下,我建议您在表单类的公共方法中执行此操作,以避免在操作类或其他位置爆炸表单配置。

此致