Symfony 如果表单字段具有标签,如何签入细枝

Symfony 如果表单字段具有标签,如何签入细枝,symfony,twig,symfony-forms,Symfony,Twig,Symfony Forms,通过迭代生成表单字段时: {% for field in form %} {{ form_widget(field); }} {% endform %} 然后,它将封装一个围绕字段输入类型的div块和一个标签(如果它有标签的话) 我想将其分为标签和小部件: <div class="form-group"> {% if field.vars.label is not null %} {{ form_lab

通过迭代生成表单字段时:

{% for field in form %}
{{ form_widget(field); }}
{% endform %}
然后,它将封装一个围绕字段输入类型的div块和一个标签(如果它有标签的话)

我想将其分为标签和小部件:

      <div class="form-group">                
        {% if field.vars.label is not null %}
          {{ form_label(field) }}
        {% endif %}
        {{ form_widget(field) }}
      </div>

{%如果field.vars.label不是null%}
{{form_标签(字段)}}
{%endif%}
{{form_widget(field)}
但是field.vars.label始终为空。顺便说一句,当我在没有条件的情况下生成时,它会正确地显示标签

如何获取条件检查的标签值

提前感谢。

根据变量参考的形式

尝试:

    {% if field.vars.attr.label is not null %}
而不是:

    {% if field.vars.label is not null %}

将标签更改为false,form_label()细枝函数将自动忽略它

下面是表单_div_layout.html.twig文件中的代码片段(请参见第2行):

{%-block form_label-%}
{%如果标签与(false)-%}
{%如果不是复合-%}
{%set label_attr=label_attr|merge({'for':id})%}
{%-endif-%}
{%如果需要-%}
{%set label_attr=label_attr | merge({'class':(label_attr.class | default(“”)~'required')| trim})%}
{%-endif-%}
{%如果标签为空-%}
{%-如果标签_格式不是空-%}
{%set label=label|U格式|替换({
“%name%”:名称,
“%id%”:id,
}) %}
{%-else-%}
{%set label=name |人性化%}
{%-endif-%}
{%-endif-%}
{{translation_domain与(false)相同)?label:label{trans({},translation_domain)}
{%-endif-%}
{%-endblock form_label-%}

对象“Symfony\Component\Form\FormView”的方法“label”不存在。结果是:(@Roland抱歉,请再次尝试
field.attr.label
alsosorry@Roland,而不是源代码,您应该通过
field.vars.attr.label
访问label字段。检查我的答案updateEvgeny Soynov是否正确,这些字段没有标签,并使用“name”,但尚不清楚form_小部件如何确定哪个字段必须有标签,以及如果未设置标签,notTwig使用哪个
name
。因此您的检查应该类似于
{%if field.vars.label不为空,field.vars.name不为空%}
。这看起来就像你试图实现的目标在cookbook中描述的一样。你是对的。问题是,所有字段都有名称。我仍然不知道form_小部件如何决定哪些字段有标签,哪些字段没有标签,这会导致我妥协:)我想避免更改formbuilder,直到现在。谢谢,我应该接受这个解决方案
{%- block form_label -%}
    {% if label is not same as(false) -%}
        {% if not compound -%}
            {% set label_attr = label_attr|merge({'for': id}) %}
        {%- endif -%}
        {% if required -%}
            {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
        {%- endif -%}
        {% if label is empty -%}
            {%- if label_format is not empty -%}
                {% set label = label_format|replace({
                    '%name%': name,
                    '%id%': id,
                }) %}
            {%- else -%}
                {% set label = name|humanize %}
            {%- endif -%}
        {%- endif -%}
        <label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}</label>
    {%- endif -%}
{%- endblock form_label -%}