Symfony 6自定义表单错误消息被忽略,如何启用自定义提示?
解决Symfony 6.3 ChoiceType自定义错误消息不生效的问题
问题根源
ChoiceType字段自带默认的选项合法性验证,这个内置验证的优先级高于你手动添加的Choice约束,导致自定义消息被系统默认消息覆盖。
解决方案一:直接在字段配置中指定错误消息
无需额外添加Choice约束,直接通过error_messages配置项覆盖默认消息,这是最简洁的方案:
->add('color', ChoiceType::class, [ 'required' => true, 'choices' => $choices, 'error_messages' => [ 'invalid_choice' => 'Invalid', ], ])
解决方案二:禁用内置验证,使用自定义约束
如果必须保留手动添加的Choice约束,需要先关闭字段的自动验证逻辑:
->add('color', ChoiceType::class, [ 'required' => true, 'choices' => $choices, 'constraints' => [ new Choice([ 'choices' => array_keys($choices), 'message' => 'Invalid', ]) ], // 关闭字段的内置验证 'validate' => false, ])
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

