2012-11-06 61 views
6

我在使用Symfony2中的表單構建器時遇到了麻煩。 確切地說,我需要輸入字段是html數組,但是我無法使用createFormBuilder-> add來創建它。 這裏是我的嘗試:使用表單構建器創建數組輸入字段symfony2

$attributesForm = $this->createFormBuilder() 
     ->add('attribute[0]', 'text') ... 

等等,但我得到以下異常:

名稱 「屬性[0]」 包含非法字符。名稱應以字母,>數字或下劃線開頭,並且只包含字母,數字,數字,下劃線(「_」),連字符>(「 - 」)和冒號(「:」)。

有沒有什麼好的解決方案,或者我必須手動創建字段?

在此先感謝!

編輯:進一步澄清這... 我想會產生這樣的事:

<div id="msoft_adminbundle_offertype"> 
<div>Name <input type="text" name="name"></div> 
<div>...</div> 
<div>Attribute 0 <input type="text" name="attribute[0]"></div> 
<div>Attribute 1 <input type="text" name="attribute[1]"></div> 
<div>Attribute 3 <input type="text" name="attribute[3]"></div> 
<ul> 
    </ul> 
<p> 
    <button type="submit">Edit</button> 
</p> 

幫助?

回答

4

您可以使用'collection'字段類型創建一個輸入字段數組。

有關如何使用它的文檔可以在這裏找到:

Collection documentation

如果這還不夠明確,或者您還有問題我會很樂意幫助你與他們。

+0

非常感謝!看起來不錯,我現在就試試吧! – markoub

+0

對不起,附加說明...: - /事實證明,我需要一些更簡單的... 我有非常具體的屬性列表,用戶可以爲每個提議設置,我只是希望他們列爲「屬性[0]」, 「屬性[1]」,等等。實際上,我也需要使用不同的數組索引,但這並不重要。總而言之,這是比較複雜的,它允許我添加用戶選項來在窗體內部創建新的窗體,並使用一組字段。我只想獲取名稱「attribute_1」,「attribute_2」等屬性數組。 – markoub

+0

我不清楚你現在真正想要什麼。如果您可以提供示例代碼(html)作爲您希望生成的表單,我可能會進一步提供幫助。 –

13

正如前面的答案所述,使用集合類型或嵌套形式,其中每個字段對應於數組的一個條目。而在你不能/不想做的情況下,可以執行以下操作:

->add('attribute_0', 'text', array(
    'property_path' => 'attribute[0]', 
)) 
+0

謝謝,我開始使用集合。 – markoub

1

您也可以在嫩枝ovveride領域。示例:

{{ form_row(form[field_name],{ 'full_name': 'attribute[' ~ step ~ ']' })}} 

步驟是您的索引。