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
       }
   })
}}