Symfony表单验证选择案例不敏感

时间:2017-11-15 15:41:42

标签: php symfony validation

在Symfony 3.3中的表单级别验证中,我试图找出如何使它成为不区分大小写的。它与一系列选择进行比较。

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('title', CollectionType::class, [
            'entry_type' => ChoiceType::class,
            'allow_add' => true,
            'allow_delete' => true,
            'entry_options'  => array(
                'choices'  => array(
                                "Sample Option",
                                "Sample Option 2",
                                "Sample Option 3",
                                "Sample Option 4"
                            )
            ),
            'error_bubbling' => false
        ]);

在options中的entry_options下是用于表单验证的数组。

我要做的是能够传递不区分大小写的值,如“示例选项”或“示例选项”,并通过表单级别验证。

提前感谢您提供任何帮助。

更新 - 正如凯文所说,我有兴趣弄清楚如何在框架中更新这一点。

2 个答案:

答案 0 :(得分:0)

如果其他人遇到类似问题,最终会发生什么事情是难以让数据转换器使用CollectionType和ChoiceType进行转换。

我没有使用CollectionType,而是将其更改为TextType。这通过了数据转换器,并且能够获得所需的结果。

$builder->add('title', TextType::class);

答案 1 :(得分:0)

除了DataTransformers之外,还有另一种值得考虑的方法。 Form Events。具体来说是FormEvents::PRE_SUBMIT

来自Symfony Docs

  

Form::submit()方法的开头调度FormEvents::PRE_SUBMIT事件。

     

它可以用于:

     
      
  • 在将数据提交到表单之前更改请求中的数据;
  •   
  • 在将数据提交到表单之前添加或删除表单字段。
  •   

这将有效地之前进行任何表单级验证。