8

我在 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>

帮助?

4

3 回答 3

16

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

->add('attribute_0', 'text', array(
    'property_path' => 'attribute[0]',
))
于 2012-11-07T22:58:56.277 回答
7

您可以使用“集合”字段类型创建输入字段数组。

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

收集文件

如果这还不够清楚,或者您仍有疑问,我很乐意为您提供帮助。

于 2012-11-06T21:02:08.903 回答
2

您也可以在 TWIG 中覆盖字段。例子:

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

step 是你的索引。

于 2013-05-20T20:57:41.093 回答