symfony 的 form_errors 显示列表项而不仅仅是文本
symfony's form_errors displays list item instead of just text
[交响乐 4]
我在 Symfony 中有这个模板代码:
{{ form_widget(registrationForm.username, {'attr': {'class': 'form-control'}}) }}
{{ form_errors(registrationForm.username) }}
它不仅显示错误文本,还生成如下列表项:
<ul><li> Username already exists </li></ul>
如何让它不生成此列表项而只获取文本?
我想这是正确的行为,因为一个字段可能有多个错误,例如 "Username is too short" 和 "Field Username contains inappropriate characters",但要只得到第一个错误,您可以使用:
{{ form_errors(registrationForm.username|first) }}
或者您可以自定义 form_errors 渲染,首先为 form_errors 创建文件,例如 your_form/custom_form_errors。html.twig :
{% block form_errors %}
{% spaceless %}
<div class="error">{{ errors|first }}</div>
{% endspaceless %}
{% endblock %}
然后将其包含到您的视图文件中:
{% form_theme form 'your_form/custom_form_errors.html.twig' %}
...
{{ form_errors(registrationForm.username) }}
只是为了扩展@Andrii Filenko 的回答。您可以很容易地修改 form_errors
或任何其他形式的 twig 函数的输出。它在 Symfony 中称为自定义主题。
考虑一下:
// templates/register.html.twig
{% extends "base.html.twig" %}
{% form_theme registrationForm _self %}
{% block form_errors %}
{% spaceless %}
{% if errors|length > 0 %}
<ul class="changed list">
{% for error in errors %}
<li>{{ error.message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
{% block body %}{% endblock %}
输出:
<ul class="changed list"><li> Username already exists </li></ul>
[交响乐 4]
我在 Symfony 中有这个模板代码:
{{ form_widget(registrationForm.username, {'attr': {'class': 'form-control'}}) }}
{{ form_errors(registrationForm.username) }}
它不仅显示错误文本,还生成如下列表项:
<ul><li> Username already exists </li></ul>
如何让它不生成此列表项而只获取文本?
我想这是正确的行为,因为一个字段可能有多个错误,例如 "Username is too short" 和 "Field Username contains inappropriate characters",但要只得到第一个错误,您可以使用:
{{ form_errors(registrationForm.username|first) }}
或者您可以自定义 form_errors 渲染,首先为 form_errors 创建文件,例如 your_form/custom_form_errors。html.twig :
{% block form_errors %}
{% spaceless %}
<div class="error">{{ errors|first }}</div>
{% endspaceless %}
{% endblock %}
然后将其包含到您的视图文件中:
{% form_theme form 'your_form/custom_form_errors.html.twig' %}
...
{{ form_errors(registrationForm.username) }}
只是为了扩展@Andrii Filenko 的回答。您可以很容易地修改 form_errors
或任何其他形式的 twig 函数的输出。它在 Symfony 中称为自定义主题。
考虑一下:
// templates/register.html.twig
{% extends "base.html.twig" %}
{% form_theme registrationForm _self %}
{% block form_errors %}
{% spaceless %}
{% if errors|length > 0 %}
<ul class="changed list">
{% for error in errors %}
<li>{{ error.message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
{% block body %}{% endblock %}
输出:
<ul class="changed list"><li> Username already exists </li></ul>