Reputation: 1500
I created two custom form types in Symfony2 and their respective twig templates. When reading the documentation, I noticed they call the twig "fields.html.twig". This lead me to believe that I could define multiple blocks in a single file, but I can't seem to understand how? Here's my current fields.html.twig file:
{% block open_range_widget %}
<div class="open_range_widget" style="display: inline;">
<div class="field" style="display: inline;">
{{ form_errors(form.sel) }}
{{ form_widget(form.sel) }}
</div>
<div class="field" style="display: inline;">
{{ form_errors(form.val) }}
{{ form_widget(form.val) }}
</div>
</div>
{% endblock %}
{% block range_widget %}
<div class="range_widget" >
<div class="field" style="display: inline; width: 50%">
{{ form_errors(form.min) }}
{{ form_widget(form.min) }}
</div>
<div class="field" style="display: inline; width: 50%">
{{ form_errors(form.max) }}
{{ form_widget(form.max) }}
</div>
</div>
{% endblock %}
Upvotes: 0
Views: 301
Reputation: 1890
If you look inside 'vendor/symfony/symfony/bridge/Twig/resources/views/form/' you will notice a file named form_div_layout.html have a look inside and you'll notice the entire collection of standard Symfony2 form widgets is contained here. So yes, you can define as many blocks as you wish in a template file. Though it is best to keep things separated a bit. Say you have 2 different styles for a choice widget dependent on the form, you would want 2 templates to define these.
You can even copy the shipped entire template to App/Resources/Views/Form/form_div_layout.html and do your modification's straight in there. However it may lead to a complicated and confusing template file with MANY unneeded Blocks.
Upvotes: 1