如何在Symfony 4中使用Twig渲染列表中的表单错误

毫无疑问, 用于渲染表单小部件和错误的Twig帮助器非常易于使用和有用。但是, 它们通常显示有自定义标记, 当我们在项目的某些特定区域工作时, 我们可能会不喜欢它们。就个人而言, 我喜欢将表单的所有错误一起显示在一个简单的列表中, 该表单将在提交表单后向用户显示(当然, 如果有错误的话)。在Twig中, 你可以使用form_errors帮助器轻松打印特定字段的错误, 或者在使用form_row呈现小部件本身时自动将其包括在内:

{# Displays global errors not specific to one field #}{{ form_errors(form) }}{# Displays errors specific to field #}{{ form_errors(form.email) }}{# Displays form_widget form_label and form_errors for field #}{{ form_row(form.email) }}

但是, 正如我们的需求所述, 此操作没有用, 因为错误会出现在每个字段下, 对于某些设计而言这很糟糕。有一种更简便的方法来获取所有已捕获的表单错误(约束失败)列表, 当提交的信息不正确时可以向用户显示。从Symfony 4中的控制器发送到Twig的form变量包含vars属性, 该属性包含多个属性, 这些属性包含有关用于表单的实体, 当前值, 方法, 数据以及对我们重要的信息, 表格的错误。
检查完成上述逻辑的以下代码段(当然, 将MyFormVariable替换为你的form变量):
{# For convenience sake of this snippet, store the errors in a variable #}{% set formErrors = MyFormVariable.vars.errors.form.getErrors(true) %}{# If there are errors in the form, display them in this unorganized list #}{% if formErrors|length %}< ul> {% for error in formErrors %}< li> {{ error.message }}< /li> {% endfor %}< /ul> {% endif %}

这个简短而有用的代码段将使你可以在一个简单列表中显示表单中每个字段的所有错误, 该错误列表仅向用户显示一次, 而不必强迫他向下滚动页面以查看哪些字段不正确有效。
【如何在Symfony 4中使用Twig渲染列表中的表单错误】编码愉快!

    推荐阅读