我有一组包含验证规则的字段:
/**
* @var integer
*
* @ORM\Column(name="options", type="integer")
* @Assert\NotBlank()
* @Assert\Min(limit = "1381", message = "Please provide number higher than 1381")
* @Assert\Regex(pattern = "/^\d{4}$/" , message = "Four digits are expected")
*/
private $options;
似乎有时Symfony正在检查每个断言(什么是好的)并在视图中呈现每个错误(不期望的是什么)。提交带有option = 5的表单后,我在视图中收到了以下错误消息。
Options
- Please provide number higher than 1381
- Four digits are expected
但是当我发送option = null时,只显示一条错误消息。
Options
- This value should not be blank.
是否有'switch'导致模板中只呈现一条错误消息?我想在表单中每个字段只有一条错误消息。
======编辑======
Solution I like作者:Bernhard Schussek
帕特感谢你指点我
答案 0 :(得分:2)
一个选项是修改表单错误块application wide的模板/块(以便模板中的每个表单都能获得所需的行为)。或覆盖per template basis上的表单布局。
如果您去查看Symfony标准版随附的default form layout,您可以在line 273上看到form_errors
树枝block
已定义。
您可以在给定模板中覆盖此块(根据文档),仅回显errors
数组中的一个元素:
{# SomeTemplate:Default:index.html.twig #}
{% extends '::base.html.twig' %}
{% form_theme form _self %}
{% block form_errors %}
{% spaceless %}
{% if errors|length > 0 %}
{{ errors[0].message }}
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
{% block content %}
{# ... render the form #}
{{ form_rest(form) }}
{% endblock %}