我尝试可视化来自验证器的错误消息。 当我写下面的例子时: -
{{ 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。
可以给我一个提示吗?
感谢您的简短反馈。
答案 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循环来获取错误!