我有一个控制器,可以创建几个相同的形式:
for ($i = 0; $i < 10; $i++) {
$infos[$i] = new Stuff();
$forms[$i] = $this->createForm('StuffType', $infos[$i]);
$forms[$i]->handleRequest($request);
}
问题是10个表单使用相同的ID。我正在寻找一种方法来指定每个表单的ID。我不想使用$this->get('form.factory')->createNamedBuilder
方法,因为我想使用我的(自定义和可重用)StuffType
表单构建器。
除非我不理解,否则我不能使用twig attr
调整,因为我希望能够保留我的表单:
for ($i = 0; $i < 10; $i++) {
$em->persist($infos[$i]);
}
某些Twig ID修改会指定一个ID,但我无法按照当前的方式持久保存对象。或者我错了吗?
目前,此代码会运行但会将同一对象保留10次。这就是我认为这是ID问题的原因。
谢谢!
答案 0 :(得分:1)
本教程将介绍如何正确嵌入表单集合:
http://symfony.com/doc/current/cookbook/form/form_collections.html
您可以忽略有关Prototype的部分,因为您不需要动态创建新表单。
您还可以在twig中设置表单ID:
{{ form_widget(form, {'id':'yourid' }) }}
但我怀疑这会解决你的问题。
答案 1 :(得分:1)
我不明白为什么你不想使用 <TypeInstantiation Name="System.Collections.Generic.List" Arguments="System.Nullable" Dynamic="Required Public" >
<TypeInstantiation Name="System.Nullable" Arguments="System.Int32" Dynamic="Required Public" />
</TypeInstantiation>
,因为这是解决问题的方法。
我首先采用的是FormFactory::createNamedBuilder()
以外的一个参数,它正是名称(表单html名称属性)。
createForm()