Symfony 为渲染错误定义自定义细枝形状块
我正在尝试为表单字段错误渲染定义一个特定的新块,保持表单错误对于常见错误渲染保持不变Symfony 为渲染错误定义自定义细枝形状块,symfony,twig,symfony-2.1,symfony-forms,Symfony,Twig,Symfony 2.1,Symfony Forms,我正在尝试为表单字段错误渲染定义一个特定的新块,保持表单错误对于常见错误渲染保持不变 #细枝配置 细枝: 调试:%kernel.debug% 严格变量:%kernel.debug% 表格: 资源: -'ApplicationMyBundle:Main:form/customFormTheme.html.twig' 在customFormTheme.html.twig中,我覆盖了从form\u div\u layout.html.twig复制的几个块,并添加了下面的新块 {%block fiel
#细枝配置
细枝:
调试:%kernel.debug%
严格变量:%kernel.debug%
表格:
资源:
-'ApplicationMyBundle:Main:form/customFormTheme.html.twig'
在customFormTheme.html.twig
中,我覆盖了从form\u div\u layout.html.twig
复制的几个块,并添加了下面的新块
{%block field_errors%}{%spaceless%}
{%如果错误|长度>0%}
{错误%中的错误为%0}
{if error.messageTemplate | length%}
- {{error.messageTemplate | trans(error.messageParameters,'validators')}
{%endif%}
{%endfor%}
{%endif%}
{%endspaceless%}{%endblock%}
然后我希望能够在我的视图中使用此块,如下所示:
{{form_label(form.message,'message.label'| trans({},'contact')|raw)}
{{form_小部件(form.message,{attr:{maxlength:1000,size:1000,rows:8}}}}
{{field_errors(form.message)}
但我收到以下错误:
函数“field_errors”不存在。你是说“表格错误”
我还试着给我的区块命名text\u errors
或textarea\u errors
中提到的,但我并不幸运
有什么想法吗?实际上它只通过定义块
text\u errors
或textarea\u errors
工作,并且仍然在模板中使用{form\u errors(field.name)}
。如果存在以字段类型命名的块(),则将使用该块,而不是form\u errors
!!但是您不能在您的小树枝模板中直接使用{{text\u 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 %}
还可以使用对象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 %}
我仍然缺少一种在自定义块中测试自定义参数的方法,并可能进行进一步的自定义,如借助帮助进行的
:“字段的自定义图例”
。我通过使用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
}
})
}}