1

我有一个包含验证规则集的字段:

/**
 * @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.

是否有一个“开关”导致模板中只呈现一条错误消息?我希望表单中的每个字段只有一条错误消息。

====== 编辑 ======
我喜欢Bernhard Schussek
Patt 的解决方案 感谢您向我指出

4

1 回答 1

2

一种选择是为表单错误块应用程序范围修改模板/块(以便模板中的每个表单都将获得所需的行为)。或者基于每个模板覆盖表单布局。

如果您查看Symfony 标准版附带的默认表单布局,您可以在第 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 %}
于 2013-02-10T01:15:14.297 回答