我想在其所在的字段中显示错误消息。我知道如何将错误消息放入字段中,但是如果插入的值不是错误消息本身,我想在重新提交后找到一种动态方法来检查。我使用教义注释。
例如,如果字段是“标题”,则错误消息将是“标题必须填写!”。
所以标题字段不再是空的,我再次点击提交,现在它是有效的。我不想检查每个字段
if $entity->getTitle() == "The title must be filled" ...
我设法做到这一点,没有在树枝和jquery中显示错误div,但我想知道是否有更好的方法从控制器执行此操作?感谢
答案 0 :(得分:1)
你问的是如何以错误的方式正确地做某事......如果输入值不是你想要处理的值,那么它应该从来没有开始的值。话虽如此,我相信你有理由......
如果表单数据与错误字符串匹配,则需要收听FormEvents::BIND_CLIENT_DATA
并清除表单数据。
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('title');
$builder->get('title')->addEventListener(
FormEvents::BIND_CLIENT_DATA,
function(FilterDataEvent $event)
{
if ('The title must be filled' == $event->getData()) {
$event->setData('');
}
},
);
如果要全局应用此行为,则需要使用扩展'field'
的表单类型扩展名附加此侦听器。您还需要使用验证器对当前字段的所有可能验证错误消息进行内省,并通过转换器传递这些消息,然后将结果与事件数据进行比较。