繁体   English   中英

根据目标字段类型自定义Symfony表单标签

[英]Customizing Symfony form label based on targeted field type

我正在尝试自定义Symfony表单标签,以通过此Symfony文档为所有必填字段添加星号(*)。 但是我的星号<span必须在<label标记内,因此我必须按此处所述自定义form_label块。 到目前为止还不错,但是自定义也已应用于复选框/无线电字段的每个项目(标签)。 看起来很奇怪

任何想法,我如何在标签自定义块中对其进行过滤以仅对父标签设置格式。

这是我重写的代码:

{% block form_label -%}
    {% if label is not sameas(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 -%}
            {% set label = name|humanize %}
        {%- endif -%}
        <label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>
            {{ label|trans({}, translation_domain) }}
            {% if required %} <span class="required" title="This field is required">*</span> {% endif %}
        </label>
    {%- endif %}
{%- endblock form_label %}

简而言之,我想在此块中使用一个变量来标识此标签针对的字段类型。

好吧,我通过对该覆盖块中可用变量的一些调整来解决此问题。 以下是我覆盖的条件代码

    {% if (required) and ( form.vars.checked is not defined ) %}
        <span class="validation-error-star" title="This field is required">*</span>
    {% endif %}

如果为该字段定义了任何已检查的属性,则我还添加了另一个条件,而不是仅将必需变量作为条件。 通常是单选/复选框字段类型具有的字段。

这有助于我区分标签覆盖块内的字段类型。 希望这对某人有帮助。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM