Frage

Ich versuche, die Formularlayouts mit Twig in Symfony2 anzupassen. Ich möchte einen Radioeingang rendern, der so etwas aussieht ...

<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>

Ich habe die außergewöhnlich überschrieben radio_widget Blockieren Sie in meinem benutzerdefinierten Formthema wie folgt

{% 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 %}

Dies macht jedoch das folgende Markup:

<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>

Grundsätzlich erstellt für jedes Radioeingangselement ein Etikett, um festzustellen, ob der Wert dafür Ja oder Nein ist, ich arbeite mit einem bereits bestehenden Design, sodass ich das HTML-Markup nicht leicht optimieren kann.

Wie kann ich verhindern, dass die Funkeingänge die Auswahltexte als Etiketten generieren? Ich weiß, dass es das nennt field_label Blockieren Sie intern, aber wie Sie meine sehen können radio_widget Ich verwies nicht darauf, also bin ich ein wenig verloren, wie ich dieses Verhalten verhindern kann.

BEARBEITEN:

Um klar zu sein, ich möchte die gleiche Art von Struktur wie mein erstes Beispiel ... Ich habe den Namen und die Wertattribute usw. ausgelassen, aber offensichtlich ist es nur zu Demonstrationszwecken.

War es hilfreich?

Lösung

Was Sie überschreiben müssen, ist nicht die radio_widget Block, aber der choice_widget eines:

{% 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 #}

Und vergessen Sie nicht, den Cache zu löschen, damit diese Änderung wirksam wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top