在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下是用于表单验证的数组。
我要做的是能够传递不区分大小写的值,如“示例选项”或“示例选项”,并通过表单级别验证。
提前感谢您提供任何帮助。
更新 - 正如凯文所说,我有兴趣弄清楚如何在框架中更新这一点。
答案 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
事件。它可以用于:
- 在将数据提交到表单之前更改请求中的数据;
- 在将数据提交到表单之前添加或删除表单字段。
这将有效地在之前进行任何表单级验证。