简体   繁体   中英

Multiple symfony2 form type templates in a single file?

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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM