3

默认无线电小部件创建以下结构:

<label>...</label>
<div id="...">
<div class="clearfix prettyradio labelright  blue">
<input type="radio" id="..._0" name="..." value="..." style="display: none;">
<a href="#" class=""></a>
...
</div>

我找到了 radio_widget 块,但它本身只包含一个输入。所以我只能自定义这部分:

<input type="radio" id="..._0" name="..." value="1" style="display: none;">

但我不明白如何改变整个无线电选择领域的结构?

另外,有谁知道,为什么 symfony 将 display:none 添加到输入中?

谢谢。

4

2 回答 2

8

如果您使用Radio Field Type,您可以通过调用仅自定义块的input一部分,它显示的只是,radio_widgetform_widget(form.yourField)

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

但是,如果您使用Choice Field Type来显示 Radio Fields (expanded => true and multiple => false)。然后,您必须覆盖该choice_widget块,该块为每个子元素调用radio_widget由全局包围的块div

你是怎么得到“显示:无”的?因为默认块中没有这样的样式。

于 2012-12-10T19:34:01.943 回答
1

如果您特别想覆盖单个单选字段的呈现方式 - 即组中每个输入字段的呈现方式 - 使用以下公式作为块名称:

_<form name>_<field name>_entry_widget

请注意这一点:_entry

如果您正在使用扩展的选择字段..._entry_row并且..._entry_label由于它们不用于单个选择而无法工作 - 至少对于单选按钮来说很好。

更一般地说,您可以使用以下代码找到很多关于 Symfony 打算在下一次调用{{ form_widget(form) }}函数调用期间使用哪个块:

{% for b in form.vars.block_prefixes %}
    {{ dump(b) }}
{% endfor %}

或者您可能想child在某些情况下查看:

{% for b in child.vars.block_prefixes %}
    {{ dump(b) }}
{% endfor %}
于 2015-07-16T03:06:52.373 回答