从Symfony2 Google Group交叉发布,因为我的问题没有回复。
我有以下表格:
<form id="contact-form" action="{{ path('_contact') }}" method="post" {{ form_enctype(form) }}>
<fieldset>
<legend>Send us a message</legend>
{{ form_errors(form) }}
<div>
<p class="label">{{ form_label(form.name) }}</p>
{{ form_widget(form.name, { 'attr' : { 'class' : 'input' } }) }}
</div>
<div>
<p class="label">{{ form_label(form.email) }}</p>
{{ form_widget(form.email, { 'attr' : { 'class' : 'input' } }) }}
</div>
<div>
<p class="label">{{ form_label(form.subject) }}</p>
{{ form_widget(form.subject, { 'attr' : { 'class' : 'input' } }) }}
</div>
<div>
<p class="label">{{ form_label(form.message) }}</p>
{{ form_widget(form.message, { 'attr' : { 'class' : 'input', 'rows' : '8', 'placeholder' : 'Type your message here' } }) }}
</div>
<div class="hidden">
<p class="label">{{ form_label(form.honeypot) }}</p>
{{ form_widget(form.honeypot) }}
</div>
{{ form_rest(form) }}
</fieldset>
我不喜欢在其字段附近直接显示字段错误。我想只列出表单本身之上的所有错误,这就是为什么我没有每个字段的错误。我正在使用一个稍微修改过的form_errors主题:
{# src/MajorProductions/SewingDiva/SiteBundle/Resources/views/errors.html.twig #}
{% block form_errors %}
{% spaceless %}
{% if errors|length > 0 %}
<div class="errors">
<ul>
{% for error in errors %}
<li>{{
error.messagePluralization is null
? error.messageTemplate|trans(error.messageParameters, 'validators')
: error.messageTemplate|transchoice(error.messagePluralization, error.messageParameters, 'validators')
}}</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
我只是将默认设置放在<div>
中,这样我就可以更轻松地设置它。
我的问题是表单错误列表根本没有显示。就像在HTML中没有空<div>
一样,没有任何东西。如果我输入了字段级错误的代码,比如说{{form_errors(form.email)}},则会显示。
我想我可以通过以下方式来克服它:
<div class="errors">
{{ form_errors(form.name) }}
{{ form_errors(form.email) }}
.
.
.
</div>
但这并没有真正解决问题。
有什么想法吗?
答案 0 :(得分:3)
也许您可以尝试以下主题,它适用于我:
{% block form_errors %}
{% spaceless %}
{% if errors|length > 0 %}
{% if compound %}
<ul class="form-errors">
{% for error in errors %}
<li>{{ error.messageTemplate|trans(error.messageParameters, 'validators') }}</li>
{% endfor %}
</ul>
{% else %}
<ul class="form-field-errors">
{% for error in errors %}
<li>{{ error.messageTemplate|trans(error.messageParameters, 'validators') }}</li>
{% endfor %}
</ul>
{% endif %}
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
请注意使用 化合物 选项。
您可能必须为每个字段
设置error_bubbling为true(Nb:这不是来自我,我不记得那个应该归功于此的人)