【问题标题】:Symfony2 error message in the input field输入字段中的 Symfony2 错误消息
【发布时间】:2012-02-06 19:11:30
【问题描述】:

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

【问题讨论】:

  • 只是一个想法:您可以在提交表单之前使用 jQuery 删除错误。
  • 我确实是这样做的,但我认为最好直接从控制器中进行,这就是为什么我要问如果它是怎么可能的。

标签: annotations symfony validation doctrine-orm


【解决方案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' 的表单类型扩展来附加此侦听器。您还需要使用验证器自省当前字段的所有可能的验证错误消息,并将这些消息传递给转换器,然后将结果与事件数据进行比较。

【讨论】:

  • 这个在控制器里查几乎是一样的,每一个字段都要一一查。我想要检查什么是字段的错误消息,如果它是字段的值,那么它是无效的。因此,动态地检查每个断言,而不是一个一个地检查。无论如何感谢您的回答
  • 我已经更新了我的答案来描述你如何做到这一点,但我不能为你做到这一点:P
  • 谢谢,我会努力的!
猜你喜欢
  • 1970-01-01
  • 2011-05-31
  • 2019-05-08
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多