In my form I have some checkboxes,
but by default, I have :
- the first radio widget
- the first label
- the second radio widget
- the label
Here is the html code generated by SYmfony2 :
<div>
<input ...>
<label ...></label>
<input ...>
<label ...></label>
</div>
What I want is to have :
the first radio widget the first label
the second radio widget the second label
The html code would be :
<label .....><input ....></label>
I think I have to override the choice_widget but don’t know how to put input and label on the same line
Here is the choice_widget I may need to override :
{% block choice_widget %}
{% spaceless %}
{% if expanded %}
<div {{ block('widget_container_attributes') }}>
{% for child in form %}
{{ form_widget(child) }} {{ form_label(child) }}
{% endfor %}
</div>
{% else %}
<select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}>
{% if empty_value is not none %}
<option value="">{{ empty_value|trans }}</option>
{% endif %}
{% if preferred_choices|length > 0 %}
{% set options = preferred_choices %}
{{ block('widget_choice_options') }}
{% if choices|length > 0 and separator is not none %}
<option disabled="disabled">{{ separator }}</option>
{% endif %}
{% endif %}
{% set options = choices %}
{{ block('widget_choice_options') }}
</select>
{% endif %}
{% endspaceless %}
{% endblock choice_widget %}
I had the same problem, and I was unable to find a solution so I worked it out on my own. You are correct that you do need to override the
{% block choice_widget %}block. The first step is to remove the{{ form_label(child) }}line from the{% if expanded %}section that prints out a separate label.Now you will just need to handle printing the label in the
{% block checkbox_widget %}block.You will need to do the same for
{% block radio_widget %}since it would not otherwise have a label now.