Symfony忽略有关额外字段的验证

时间:2015-04-16 12:47:49

标签: angularjs forms symfony

我需要使用angularJS动态地使用不同的名称和id向表单添加其他表单字段。在检查表单是否有效时,如何让symfony忽略这些字段?我不能将这些字段添加到构建器中,因为我不知道该字段的名称是什么。 我可以使用包含ID的表单字段命名,例如field1field2field3等等。但如果是这样的话我能以某种方式设定场地的模式吗?像field*

这样的东西

2 个答案:

答案 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

您应该以这样的方式组织您的应用:用户操作(添加表单字段的用户)将使用生成表单字段所需的数据提交表单:

http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#cookbook-form-events-submitted-data

Symfony2表单生成仅发生在服务器端,这是出于安全原因。

忽略表单验证不是一种好的做法,我认为应该完全避免。