【问题标题】:Symfony2: preventing radio widgets from rendering labelsSymfony2:防止无线电小部件呈现标签
【发布时间】:2012-01-09 03:29:37
【问题描述】:

我正在尝试使用 symfony2 中的 Twig 自定义表单布局。我的目标是渲染一个看起来像这样的无线电输入......

<label class=" required">Label name</label>
<span class="form-radio">
    <input type="radio" name="album_has_subalbums_1" /> Yes
</span>
<span class="form-radio">
    <input type="radio" name="album_has_subalbums_0" /> No
</span>

我已经覆盖了我的自定义表单主题中的radio_widget 块,如下所示

{% block radio_widget %}
{% spaceless %}
    <span class='form-radio'>
        <input type="radio" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
    </span>
{% endspaceless %}
{% endblock radio_widget %}

但是,这会呈现以下标记:

<label class=" required">Label name</label>

<span class="form-radio">
    <input type="radio" id="album_has_subalbums_1" name="album[has_subalbums]" required="required" value="1">
</span>
<label for="album_has_subalbums_1" class=" required">Yes</label>

<span class="form-radio">
    <input type="radio" id="album_has_subalbums_0" name="album[has_subalbums]" required="required" value="0">
</span>
<label for="album_has_subalbums_0" class=" required">No</label>

基本上,对于每个单选输入元素,它都会创建一个标签来识别它的值是“是”还是“否”。我正在使用预先存在的设计,因此无法轻松调整 html 标记。

如何防止单选输入将选择文本生成为标签?我知道它在内部调用了 field_label 块,但正如你所见,我的 radio_widget 没有引用它,所以我对如何防止这种行为有点迷茫。

编辑:

明确地说,我想要与我的第一个示例相同的结构...我省略了名称和值属性等,但显然它只是为了演示目的。

【问题讨论】:

    标签: forms radio-button symfony twig


    【解决方案1】:

    您需要覆盖的不是radio_widget 块,而是choice_widget 一个:

    {% block choice_widget %}
    {% spaceless %}
        {% if expanded %}
            <div {{ block('widget_container_attributes') }}>
            {% for child in form %}
                {{ form_widget(child) }}
                {{ child.get('label') | trans }} {# <- this is what you need #}
        {# leave the rest untouched #}
    

    并且不要忘记清除缓存以使此更改生效。

    【讨论】:

    • child.get('label') 对我不起作用,而 child.vars.label 对我起作用。
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 2011-06-14
    • 2019-10-18
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    相关资源
    最近更新 更多