如何显示 symfony 验证错误?

How to show symfony validation errors?

我尝试可视化来自验证器的错误消息。 当我编写以下示例时:-

{{ form_errors(form.pGWeek) }}

它工作正常,我收到了消息。但是我的表单有200个字段,所以不实用。

所以我想遍历一个包含所有消息的数组,在这样的表单末尾:

{% if form.name.vars.errors|length > 0 %}
  <ul class="form-errors name">
   {% for error in form.name.vars.errors %}
        {{ error }}
 {% endfor %}
  </ul>
{% endif %}

但是我没有收到一些消息。我也尝试了一些其他版本.. 但没有任何效果。我正在使用 Symfony 2.7。

有人可以给我提示吗?

感谢您的简短反馈。

所以您只想显示表单所有子项的所有错误,而不是在每个输入字段旁边显示它们?
然后你可以遍历你的 form 的所有 children,检查是否有任何 errors 出现在这个 children 上,如果是,遍历所有 errors children。可能是这样的:

   {% for children in form.children %}
       {% if children.vars.errors is defined %}
           {% for error in children.vars.errors %}
               {#{{ dump(children) }}#}
               {#{{ dump(error) }}#}
               {{ dump(children.vars.name ~ ': ' ~ error.message) }}
            {% endfor %}
        {% endif %}
   {% endfor %}

这会导致类似 description: This value should not be blank..

的错误

您可以使用依赖项注入器在您的控制器中创建该循环和条件,然后在您的视图中迭代该错误数组并将其放入 div o 中您想要的任何地方,我想有一些东西像这样:

$errors = $this->get('validator')->validate(yourObject);
        if (!empty($errors)) {
            foreach ($errors as $error)
                throw new \Exception($error->getMessage());
        }

也就是说,如果你想停止进程并得到一个异常,但你想显示错误,那么你做类似的事情,你只需要删除那个 foreach 并渲染你的树枝模板并给它 $ errors 变量,在你的模板中你只需要做一个 for 循环来获取错误!