如何设计Symfony2表单原型

如何设计Symfony2表单原型,symfony,symfony-forms,Symfony,Symfony Forms,我有一份Symfony2格式的表格集。我需要用一些特定的div结构来设置这些表单的样式,如下所示: <div class="block" style="clear: both;"> {{ form_row(form.name) }} {{ form_row(form.address) }} </div> <div class="block"> {{ form_row(form.website) }} {{ form_row(form.email

我有一份Symfony2格式的表格集。我需要用一些特定的div结构来设置这些表单的样式,如下所示:

<div class="block" style="clear: both;">
  {{ form_row(form.name) }}
  {{ form_row(form.address) }}
</div>
<div class="block">
  {{ form_row(form.website) }}
  {{ form_row(form.email) }}
</div>
<div>
 <div>
   {{ form_row(form.text1) }}
 </div>
</div>

{{form_row(form.name)}}
{{form_行(form.address)}
{{form_row(form.website)}
{{form_row(form.email)}
{{form_row(form.text1)}

如您所见,该结构是不规则的,我不知道如何在{%block collection\u widget%}中的{%for row in rows%}循环中设置它的样式。你知道我如何设计/构建表单原型,使添加了javascript的表单看起来与我想要的一模一样吗?

你可以使用一个简单的for循环来实现,而无需扩展{%block collection\u widget%}:

{% for counter in form.MyCollection %}
<div class="block" style="clear: both;">
  {{ form_row(form.MyCollection[loop.index0].name) }}
  {{ form_row(form.MyCollection[loop.index0].address) }}
</div>
<div class="block">
  {{ form_row(form.MyCollection[loop.index0].website) }}
  {{ form_row(form.MyCollection[loop.index0].email) }}
</div>
<div>
 <div>
   {{ form_row(form.MyCollection[loop.index0].text1) }}
 </div>
</div>
{% endfor %}
{form.MyCollection%中计数器的%
{{form_行(form.MyCollection[loop.index0].name)}
{{form_行(form.MyCollection[loop.index0].address)}
{{form_行(form.MyCollection[loop.index0].website)}
{{form_行(form.MyCollection[loop.index0].email)}
{{form_行(form.MyCollection[loop.index0].text1)}
{%endfor%}

我发现最好的方法是为表单使用单独的细枝模板,然后将表单/原型传递到类似的地方

_form.html.twig


{{form_row(form.name)}}
{{form_行(form.address)}
{{form_row(form.website)}
{{form_row(form.email)}
{{form_row(form.text1)}
update.html.twig

    {form.items%%中的项的%s}
  • {{include(''u form.html.twig',{'form':item}}}
  • {%endfor%}

这将允许您将表单项目原型传递到用于实际表单项目的同一模板中,这意味着当情况发生变化时,您只需更新一个模板。

是您发布表单原型内容所希望的HTML吗?或多或少,但是。这只是我想在原型中使用的代码的一部分。为什么要使用loop.index[0]?还有,我应该把这个代码放在哪里?好的,我试过了,明白了。无需更多解释:)
<div class="block" style="clear: both;">
    {{ form_row(form.name) }}
    {{ form_row(form.address) }}
</div>
<div class="block">
    {{ form_row(form.website) }}
    {{ form_row(form.email) }}
</div>
<div>
    <div>
        {{ form_row(form.text1) }}
    </div>
</div>
<ul data-prototype="{{ include('_form.html.twig', 
                                {'form': form.items.vars.prototype })|e }}">
    {% for item in form.items %}
        <li>{{ include('_form.html.twig', {'form': item }) }}</li>
    {% endfor %}
</ul>