如何从控制器定义表单唯一 "id" 属性
How to define form unique "id" attribute from a controller
我有一个控制器,它创建了几个相同的表单:
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 问题。
谢谢!
本教程介绍了如何正确嵌入表单集合:
http://symfony.com/doc/current/cookbook/form/form_collections.html
您可以忽略有关 Prototype 的部分,因为您不需要动态创建新表单。
您还可以从 twig 设置表单 ID:
{{ form_widget(form, {'id':'yourid' }) }}
但我怀疑它能否解决您的问题。
我不明白你为什么不想使用 FormFactory::createNamedBuilder()
,因为这是你问题的解决方案。
我比 createForm()
多了一个参数,首先是名称(形式 html 名称属性)。
// From a controller extending \Symfony\Bundle\FrameworkBundle\Controller\Controller
// in Symfony 2.7
$this->get('form.factory')->createNamedBuilder(
'stuff_form_'.$i, // will print <form name="stuff_form_1" ...
'StuffType', // type alias
$infos[$i], // data default to null
$options // array if needed
);
// in Symfony 2.8+
$this->get('form.factory')->createNamedBuilder(
'stuff_form_'.$i,
StuffType::class, // Full qualified name of class (FQCN)
$infos[$i]
);
我有一个控制器,它创建了几个相同的表单:
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 问题。
谢谢!
本教程介绍了如何正确嵌入表单集合:
http://symfony.com/doc/current/cookbook/form/form_collections.html
您可以忽略有关 Prototype 的部分,因为您不需要动态创建新表单。
您还可以从 twig 设置表单 ID:
{{ form_widget(form, {'id':'yourid' }) }}
但我怀疑它能否解决您的问题。
我不明白你为什么不想使用 FormFactory::createNamedBuilder()
,因为这是你问题的解决方案。
我比 createForm()
多了一个参数,首先是名称(形式 html 名称属性)。
// From a controller extending \Symfony\Bundle\FrameworkBundle\Controller\Controller
// in Symfony 2.7
$this->get('form.factory')->createNamedBuilder(
'stuff_form_'.$i, // will print <form name="stuff_form_1" ...
'StuffType', // type alias
$infos[$i], // data default to null
$options // array if needed
);
// in Symfony 2.8+
$this->get('form.factory')->createNamedBuilder(
'stuff_form_'.$i,
StuffType::class, // Full qualified name of class (FQCN)
$infos[$i]
);