Domanda

Sto cercando di personalizzare i layout form usando Ramoscello in Symfony2. Io sto puntando a rendere un ingresso radio che sembra qualcosa di simile ...

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

Ho ignorato il blocco radio_widget nel mio modulo personalizzato tema come segue

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

Tuttavia, questo rende il seguente 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>

In pratica, per ogni elemento ingresso radio sua creazione un'etichetta per identificare se il valore è Sì o No. sto lavorando con un disegno preesistente quindi non posso modificare facilmente html markup.

Come posso impedire che gli ingressi radio di generare testi di selezione come etichette? So che richiama il blocco field_label internamente, ma come si può vedere il mio radio_widget non fa riferimento ad esso, quindi sono un po 'perso su come impedire questo comportamento.

EDIT:

Per essere chiari, io voglio lo stesso tipo di struttura come il mio primo esempio ... ho lasciato fuori il nome e il valore degli attributi, ecc, ma ovviamente è solo a scopo dimostrativo.

È stato utile?

Soluzione

Quello che dovete sostituzione non è il blocco radio_widget, ma la choice_widget uno:

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

E non dimenticate di svuotare la cache per questa modifica abbia effetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top