使用额外字段验证symfony2表单



我正在为一个主干.js应用程序的symfony2后端工作。我有我的模型和形式。

但是,在创建/更新模型时,主干.js会向 REST API 发送一些其他属性,而我正在努力让表单进行验证。

如何在 symfony2 中获取表单以接受其他数据,或者如何在将数据绑定到表单之前删除特定键?

您应该使用选项"allow_extra_fields"。

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
        $resolver->setDefaults(
        array(
            'allow_extra_fields' => true
        )
    );
}

对于symfony 2.8+,请使用configureOptions(OptionsResolver $resolver)而不是setDefaultOptions(OptionsResolverInterface $resolver)

property_path 现已在 SF 2.1 中弃用,改用"mapped"

$builder
    ->add("firstName", "text")
    ->add("lastName", "text")
    ->add("tac", "checkbox", array(
        "mapped" => false
    )
);

要让Symfony2接受其他数据,请将其他字段添加到表单构建器中,并将其property_path选项设置为false:

例:

$builder
    ->add('my_additional_field', 'checkbox', array(
        'mapped' => false,
    ));

在绑定数据之前,无需删除密钥,无论如何它们都会被忽略。

您可以侦听FormEvents::BIND_CLIENT_DATA(如果您使用的是 2.1 dev,则FormEvents::PRE_BIND)事件侦听器和添加/删除字段。请参阅此食谱条目。

最新更新