繁体   English   中英

禁用Symfony 2 Type中选择字段的后端验证

[英]Disable backend validation for choice field in Symfony 2 Type

是否可以禁用指定字段的后端(服务器端)验证?

我正在尝试使用动态加载的选项发送表单我得到错误“错误:此值无效。”

我认为symfony正在检查我的值是否在默认声明列表中(在我的情况下是空列表),如果不是则返回false。

这令人困惑,但这种行为并不是真正的验证相关,因为它是由“ChoiceToValueTransformer”引起的,它确实在您预先声明的列表中搜索条目。 如果您的列表为空或者您想要禁用变压器,则只需重置它即可。

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('yourField', 'choice', array('required'=>false));

    //more fields...

    $builder->get('yourField')->resetViewTransformers();
}

然后您的自定义验证将介入(如果存在)。

在表单类型类中添加此内部buildForm方法,以便您可以验证输入字段值而不是选择字段值中的选项;

$builder->addEventListener(
    FormEvents::PRE_SUBMIT,

    function (FormEvent $event) {
        $form = $event->getForm();

        if ($form->has('field')) {
            $form->remove('field');
            $form->add(
                'field', 
                'text', 
                ['required' => false]
            )
        }
    }
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM