我需要使用angularJS动态地使用不同的名称和id向表单添加其他表单字段。在检查表单是否有效时,如何让symfony忽略这些字段?我不能将这些字段添加到构建器中,因为我不知道该字段的名称是什么。
我可以使用包含ID的表单字段命名,例如field1
,field2
,field3
等等。但如果是这样的话我能以某种方式设定场地的模式吗?像field*
答案 0 :(得分:1)
尽管我同意@sepikas_antanas这一事实,如果您非常想要走这条路,您可以使用提交的数据添加未知的表单字段:
class ExampleEntry extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$f = function(FormEvent $event) {
$form = $event->getForm();
$data = $event->getData();
if (is_array($data)) {
foreach ($data as $name => $value) {
if (!$form->has($name)) {
// dunno you fields types
$form->add($name, 'hidden');
}
}
}
};
$builder->addEventListener(FormEvents::PRE_SET_DATA, $f);
$builder->addEventListener(FormEvents::PRE_SUBMIT, $f);
}
答案 1 :(得分:0)
根据symfony2文档http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html
您应该以这样的方式组织您的应用:用户操作(添加表单字段的用户)将使用生成表单字段所需的数据提交表单:
Symfony2表单生成仅发生在服务器端,这是出于安全原因。
忽略表单验证不是一种好的做法,我认为应该完全避免。