SYMFONY2:防止射频小部件呈现标签
-
25-10-2019 - |
题
我正在尝试使用Symfony2中的树枝自定义表单布局。我的目标是渲染一个看起来像这样的无线电输入...
<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>
基本上,对于每个无线电输入元素,都会创建一个标签,以确定其值是“是”还是否。
如何防止无线电输入生成选择文本作为标签?我知道它叫 field_label
内部封锁,但是您可以看到我的 radio_widget
没有引用它,所以我对如何防止这种行为有些迷失。
编辑:
需要明确的是,我想要与我的第一个示例相同的结构...我遗漏了名称和价值属性等,但显然它只是出于演示目的。
解决方案
您需要覆盖的不是 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 #}
而且,不要忘记清除缓存以进行此更改以生效。
不隶属于 StackOverflow