2012-01-10 41 views
0

我想在它所在的字段中显示错误消息。我知道如何将错误消息放入字段中,但是如果插入的值不是错误消息本身,我想找到重新提交后检查的动态方法。我使用教义注释。 例如,如果该字段是“标题”,则错误消息将是“标题必须填写!”。 所以标题字段不再是空的,我再次单击提交,现在它是有效的。我不想检查像 if $entity->getTitle() == "The title must be filled" ...if $entity->getTitle() == "The title must be filled" ... 我已经设法做到这一点,没有显示错误divs和jquery,但我想知道是否有更好的方法来从控制器做到这一点?谢谢输入字段中的Symfony2错误消息

+0

只是一个想法:你可以在提交表单之前用jQuery删除错误。 – 2012-01-10 12:34:21

+0

我是这么做的,但是我认为从控制器开始做它会更好,这就是为什么我问如果它是如何可能的。 – Matthew87 2012-01-10 12:38:21

回答

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'表单类型的扩展连接这个监听器。您还需要使用验证程序对当前字段的所有可能的验证错误消息进行反思,并通过翻译器将其传递,然后将结果与事件数据进行比较。

+0

如果我在控制器中检查它,这几乎是一样的,你必须逐一检查每一个字段。我想要检查字段的错误消息是什么,如果它是字段的值,那么它是无效的。所以不要一个接一个地检查每个断言。无论如何感谢您的回答 – Matthew87 2012-01-10 15:13:06

+0

我已更新我的回答,以描述您如何做到这一点,但我无法为您做到:P – 2012-01-10 17:47:02

+0

谢谢我会尽力做到这一点! – Matthew87 2012-01-11 09:45:19