如果表单字段有标签,如何检查树枝

how to check in twig if a form field has label

当通过迭代生成表单域时:

{% 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 始终为空。顺便说一句,当我在没有条件的情况下生成时,它会正确显示标签。

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

提前致谢。

根据表单变量参考doc

试试:

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

而不是:

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

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

这是 form_div_layout.html.twig 文件中的代码片段(参见第 2 行):

{%- 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 -%}