【问题标题】:Create array input field with form builder symfony2使用表单构建器 symfony2 创建数组输入字段
【发布时间】:2012-11-06 19:52:59
【问题描述】:

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

帮助?

【问题讨论】:

    标签: php symfony formbuilder


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我开始使用收藏了。
    【解决方案2】:

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

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

    Collection documentation

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

    【讨论】:

    • 抱歉,补充说明... :-/ 事实证明我需要一些更简单的...属性[0]”、“属性[1]”等。实际上,我也需要使用不同的数组索引,但这并不重要。所以,总而言之,这更复杂,它允许我添加用户选项以在表单内创建新表单,并带有一组字段。我只想获取属性数组而不是名称“attribute_1”、“attribute_2”等。
    • 我不清楚你现在真正想要什么。如果您可以提供您希望生成的表单的示例代码 (html),我可能会为您提供进一步的帮助。
    • 我在原帖中添加了解释... :-)
    • 我不认为你可以跳过这样的索引。但其余的就是 collection 类型所做的。
    【解决方案3】:

    您还可以在 TWIG 中覆盖字段。示例:

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

    step 是你的索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-14
      • 2014-02-18
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      相关资源
      最近更新 更多