Question

My research into this has discovered various ways of theming Symfony 2 form collections, but so far not one which allows you to distinguish between the form_rows of several nested forms, to have them be displayed differently.

I have a 3-layer nested form, consisting of a top Main, which contains several (DB-backed) Sections in a Collection, each Section containing several (DB-backed) Questions in a Collection. I want to use DIVs to control the layout of my Sections, but I want to use TABLEs to control the layout of each set of Questions.

<div id="main">
    <div id="section1">
        <table>
            <tr>Question 1</tr>
            <tr>Question 2</tr>
        </table>
    </div>
    <div id="section2">
        <table>
            <tr>Question 3</tr>
            <tr>Question 4</tr>
        </table>
    </div>
</div>

I understand how, for a single entire form, I can change the template fragment used by the form_row function to render the rows, but here I want at least two different types of row. I don't think you can make your own form_row function which works two ways, using two different template fragments.

How can I render one level of fields completely differently from another?

Was it helpful?

Solution

So, rather than leave this hanging I'll answer it.

What I was asking may not be technically impossible, maybe via @Chausser's proposed nesting detection technique, but it's at least difficult/unwieldy.

In the end I solved the problem by simply using Symfony's normal customised Form rendering features - adding each field etc into exactly the right place within a detailed Twig template. I was completely new to Symfony 2 at the time of asking, and didn't even realise this was possible!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top