使用表单生成器symfony2创建数组输入字段

时间:2012-11-06 19:52:59

标签: php symfony formbuilder

我在使用Symfony2中的表单构建器时遇到了问题。 确切地说,我需要输入字段是html数组,但我无法使用createFormBuilder-> add创建它。 这是我试过的:

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

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

  

名称“attribute [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>

帮助?

3 个答案:

答案 0 :(得分:15)

如前面的答案所述,使用集合类型或嵌套表单,其中每个字段对应于数组的一个条目。如果您不能/不想这样做,您可以执行以下操作:

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

答案 1 :(得分:6)

您可以使用'collection'字段类型创建输入字段数组。

有关如何使用它的文档可以在这里找到:

Collection documentation

如果不够清楚,或者您仍然有疑问,我很乐意帮助您。

答案 2 :(得分:1)

您也可以覆盖TWIG中的字段。示例:

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

其中step是您的索引。