Symfony2:предотвращение отображения меток виджетами радио

StackOverflow https://stackoverflow.com/questions/8316739

Вопрос

Я пытаюсь настроить макеты форм с помощью Twig в 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>

По сути, для каждого элемента радиовхода создается метка, позволяющая определить, является ли значение для него Yes или No.Я работаю с уже существующим дизайном, поэтому не могу легко настроить html-разметку.

Как я могу запретить радиовходам генерировать тексты выбора в виде меток?Я знаю, что это вызывает field_label блокирую внутренне, но, как вы можете видеть, мой radio_widget на это нет ссылки, поэтому я немного растерян относительно того, как предотвратить такое поведение.

Редактировать:

Чтобы было понятно, я хочу иметь такую же структуру, как в моем первом примере...Я опустил атрибуты name и value и т.д., но, очевидно, это просто для демонстрационных целей.

Это было полезно?

Решение

То, что вам нужно переопределить, - это не 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 #}

И не забудьте очистить кэш, чтобы это изменение вступило в силу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top