如何显示symfony验证错误?

时间:2017-12-07 11:35:23

标签: symfony symfony-2.7

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

{{ 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。

可以给我一个提示吗?

感谢您的简短反馈。

2 个答案:

答案 0 :(得分:0)

因此,您只想显示表单中所有子项的所有错误,而不是在每个输入字段旁边显示它们? 然后,您可以遍历children的所有form,检查此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.

答案 1 :(得分:-1)

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

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

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