我正在尝试为表单字段错误呈现定义一个特定的新块,保持form_errors不变,以防止常见错误呈现。
# Twig Configuration
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
form:
resources:
- 'ApplicationMyBundle:Main:form/customFormTheme.html.twig'
在customFormTheme.html.twig
中,我覆盖了从form_div_layout.html.twig
复制的几个块,另外我添加了以下新块。
{% block field_errors %}{% spaceless %}
{% if errors|length > 0 %}
<ul class="errors">
{% for error in errors %}
{% if error.messageTemplate|length %}
<li class="error">{{ error.messageTemplate|trans(error.messageParameters, 'validators') }}</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
{% endspaceless %}{% endblock %}
然后我希望能够在我的视图中使用此块:
<div>
{{ form_label(form.message, 'message.label'|trans({},'contact')|raw ) }}
{{ form_widget(form.message, {attr: {maxlength:1000, size:1000, rows:8}}) }}
{{ field_errors(form.message) }}
</div>
但是我收到以下错误:
The function "field_errors" does not exist. Did you mean "form_errors"
我也试过命名我的阻止text_errors
或textarea_errors
here ,但我没有更幸运。
有什么想法吗?
答案 0 :(得分:2)
实际上它的工作原理是仅定义块text_errors
或textarea_errors
,并且仍在模板中使用{{ form_errors(field.name) }}
。如果存在以您的字段类型命名的块( according to form field types ),则将使用该块而不是form_errors
。
<强> !!但是你不能直接在你的树枝模板中使用{{ text_errors(field.name) }}
!!
您可以像这样使用特定类型的自定义行
{% block textarea_row %}{% spaceless %}
<div class="textarea l-field {{ (form_errors(form)?'error':'') }}">
{{ form_label(form) }}
{{ form_widget(form) }}
{{ form_errors(form) }}
</div>
{% endspaceless %}{% endblock textarea_row %}
并在模板中使用它,如下所示:
{# message has textarea field type #}
{{ form_row(form.message, {
label: 'message.label'|trans({},'contact')|raw ,
attr: {maxlength:1000, size:1000, rows:8}})
}}
您还可以使用对象attr {}
传递许多自定义参数{% block form_row %}
{% spaceless %}
<div class="form-field {{ (form_errors(form)?'error':'') }}">
{{ form_label(form) }}
{{ form_widget(form) }}
{{ dump(attr) }}
{% if attr.help is defined and not attr.help == '' %}<p class="form-help">{{ attr.help }}</p>{% endif %}
{{ form_errors(form) }}
</div>
{% endspaceless %}
{% endblock form_row %}
并像这样使用
{{ form_row(form.message, {
label: 'message.label'|trans({},'contact')|raw ,
attr: {
maxlength:1000, size:1000, rows:8,
help: 'password.help'|trans({})|raw
}
})
}}