Symfony 2批处理操作的表单名称?

时间:2013-01-03 19:13:55

标签: symfony

我有一个项目列表作为html表。我希望有机会以批处理模式保存一些数据。 要做到这一点,我需要我的表单字段名称如下所示: provider [i] [title] 等。 但是当我尝试创建表单字段时,我收到一个错误:

表单类型名称(“provider [0]”)无效。名称只能包含字母,数字和“_”。

我对表单集合很感兴趣,但这并不是我需要的。

我希望将整个表单作为$ request-> request-> get('provider')进行操作,然后迭代以获取实际数据。 我糊涂了!!这是我能想象到的最简单的任务。

<input type='text' name='provider[0][title]'>
<input type='text' name='provider[1][title]'>
<input type='text' name='provider[2][title]'>

我可以使用$ request-&gt; request-&gt; all(),这是一个解决方案,但我认为不是那么优雅。任何想法?

1 个答案:

答案 0 :(得分:1)

这是完全正常的,您无法使用“provider [0]”之类的名称直接命名您的字段。字段名称的这一部分由Symfony生成。

对我而言,在一种形式中存储多个实体的唯一(好)方法是使用集合。在Symfony2的文档中对它们进行了很好的解释:http://symfony.com/doc/current/cookbook/form/form_collections.html

在您的情况下,您只需创建一个包含一个收集字段的表单,并使用javascript在控制器或航班上添加行。对于“提供者”字段,只需创建一个带有一个文本字段的formType。

如果使用html数组,只需为每个实体添加一行即可。如果提供者[i]中的i未链接到其他实体,则它们将与数据库中的实体绑定。

最后,使用POST数据肯定不是一个好的解决方案:你将失去表单字段断言和CSRF保护。

相关问题