2014-09-21 73 views
1

我最近開始使用Symfony2框架。
我已經爲我將要使用的任何不正確的術語道歉。定製Symfony2表格

我想定製如何在我的應用程序中呈現表單。

更具體地說,在我的嫩枝文件我渲染整個形式

{{ form(forms) }} 

我想自定義表單的佈局。我知道表單的每一行都可以擴展爲

{{ form_start(forms) }} 

//... 
<div> 
    {{ form_label(forms.field) }} 
    {{ form_errors(forms.field) }} 
    {{ form_widget(forms.field) }} 
</div> 
//... 

{{ form_end(forms) }} 

用這種格式編寫的表單可以將所需的自定義添加到佈局。

這是問題:我的表單沒有預定義的行數,但是這些取決於存儲在數據庫中的某些值。我想在我的樹枝上做的事情是這樣的

{{ form_start(forms) }} 

{% for field in forms %} 
<div> 
    {{ form_label(forms.field) }} 
    {{ form_errors(forms.field) }} 
    {{ form_widget(forms.field) }} 
</div> 
{% endfor %} 

{{ form_end(forms) }} 

不幸的是,這個for循環不起作用。 我也看過(How to Customize Form Rendering),但我認爲這不適合我的情況(是嗎?)。

有什麼建議嗎?
預先感謝您的幫助。

回答

1

您需要定製form_row方法http://symfony.com/doc/current/cookbook/form/form_customization.html#customizing-the-form-row

// my_form.html.twig 
{% extends 'form_div_layout.html.twig' %} 

{% block form_row %} 
    <div> 
     {{ form_label(form) }} 
     {{ form_errors(form) }} 
     {{ form_widget(form) }} 
    </div> 
{% endblock form_row %} 

// view.html.twig 
{% form_theme form 'my_form.html.twig' %} 
{{ form_start(form) }} 
+0

是的!你是對的!答案就在我眼前...... 非常感謝! – Alberto 2014-09-22 08:35:35

0

作爲一個更靈活的解決方案,你可以做你直接想要的東西不改變窗體上的所有表格行主題結合的方式。

假設你的主窗體包含一個集合(!如果不是,讓我們它現在如何做)呼籲subforms與項目(每個是另一種形式)的變量數,你可以這樣做:

{{ form_start(forms) }} 

{% for subform in forms.subforms %} 
<div> 
    {{ form_label(subform.fieldname) }} 
    {{ form_errors(subform.fieldname) }} 
    {{ form_widget(subform.fieldname) }} 
</div> 
{% endfor %} 

{{ form_end(forms) }}