Переопределение виджета радио symfony
Виджет радио по умолчанию создает следующую структуру:
<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 на вход?
Спасибо.
2 answers
Если вы используете Тип радиополя , вы можете настроить только часть input
блока radio_widget
, вызвав form_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 %}
Но если вы используете Тип поля выбора для отображения радиополей (expanded => true and multiple => false)
. Затем вам придется переопределить блок choice_widget
, который вызывает для каждого дочернего элемента блок radio_widget
, окруженный глобальным div
Как вы получили "дисплей: нет"? потому что в блоке по умолчанию такого стиля нет.
Если вы специально хотите переопределить способ отображения отдельного радиополя, т.Е. Способ отображения каждого поля ввода в группе, используйте эту формулу для имени блока:
_<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 %}