Twig Form - 不显示复选框标签

Twig Form - Don't show label for checkbox

这可能很简单,但我的表单主题(以及许多其他主题)中有一个标签和复选框覆盖块。我希望所有标签都由 form_label 块处理,复选框除外。

我目前正在将标签呈现包装在一个 if 语句中,我不想这样做,因为它没有 "feel clean":

{%-  if form.vars.block_prefixes.1 is not defined or form.vars.block_prefixes.1 != 'checkbox' -%}

这是我覆盖的块,我是否可以禁用 checkbox_widget 块中的标签?

{#
    ############# Checkbox #############
#}

{%- block checkbox_widget -%}
    {% spaceless %}
        <label  for="{{ id }}"><input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />{{ label|raw }}</label>
    {% endspaceless %}
{%- endblock checkbox_widget -%}

{#
############# Labels #############
#}

{%- block form_label -%}
    {% if label is not sameas(false) -%}
        {% set label_attr = label_attr|merge({'class': ('FormItem-label' ~ label_attr.class|default(''))|trim}) %}
        {% 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('') ~ ' is-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 -%}
        {%-  if form.vars.block_prefixes.1 is not defined or form.vars.block_prefixes.1 != 'checkbox' -%}
            <label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ label|trans({}, translation_domain) }}</label>
        {%- endif -%}
    {%- endif -%}
{%- endblock form_label -%}

{%- block button_label -%}{%- endblock -%}

已手动将其添加到 twig 模板中,以免弄乱表单主题。

{% block field_row %}
    <div class="Grid-cell">
        <div class="FormItem FormItem--checkbox is-required" required="required">
            <label for="terms_and_conditions">
                {{ form_widget(form.terms_and_conditions) }}
                {% autoescape false %}{{ form.terms_and_conditions.vars.label  }}{% endautoescape %}
            </label>
            {{ form_errors(form.terms_and_conditions) }}
        </div>
    </div>
{% endblock %}

你应该使用:

{{ form_label(form.terms_and_conditions) }}

Documentation