Php “如何定义表单唯一性”;id";来自控制器的属性

Php “如何定义表单唯一性”;id";来自控制器的属性,php,symfony,twig,symfony-forms,Php,Symfony,Twig,Symfony Forms,我有一个控制器,可以创建几个相同的表单: for ($i = 0; $i < 10; $i++) { $infos[$i] = new Stuff(); $forms[$i] = $this->createForm('StuffType', $infos[$i]); $forms[$i]->handleRequest($request); } 某些细枝ID修改将指定一个ID,但我无法以当前的方式持久化对象。还是我错了 当前,此代码运行但将同一对象保持10次。

我有一个控制器,可以创建几个相同的表单:

for ($i = 0; $i < 10; $i++) {
   $infos[$i] = new Stuff();
   $forms[$i] = $this->createForm('StuffType', $infos[$i]);
   $forms[$i]->handleRequest($request);
}
某些细枝ID修改将指定一个ID,但我无法以当前的方式持久化对象。还是我错了

当前,此代码运行但将同一对象保持10次。这就是为什么我认为这是一个身份问题


谢谢

本教程介绍如何正确嵌入表单集合:

您可以忽略原型部分,因为您不需要动态创建新表单

您还可以从twig设置表单id:

{{ form_widget(form, {'id':'yourid' }) }} 

但我怀疑它能否解决您的问题。

本教程介绍了如何正确嵌入表单集合:

您可以忽略原型部分,因为您不需要动态创建新表单

您还可以从twig设置表单id:

{{ form_widget(form, {'id':'yourid' }) }} 

但我怀疑它能否解决您的问题。

我不明白您为什么不想使用
FormFactory::createNamedBuilder()
,因为这是您问题的解决方案

我比
createForm()
多取一个参数作为第一个参数,它正是名称(form-html-name属性)

//来自扩展\Symfony\Bundle\FrameworkBundle\controller\controller的控制器
//在Symfony 2.7中
$this->get('form.factory')->createNamedBuilder(
'stuff\u form.'$i,//将打印get('form.factory')->createNamedBuilder(
"东西(形式)".$i,
StuffType::class,//类的完整限定名(FQCN)
$infos[$i]
);

我不明白您为什么不想使用
FormFactory::createNamedBuilder()
,因为这是您问题的解决方案

我比
createForm()
多取一个参数作为第一个参数,它正是名称(form-html-name属性)

//来自扩展\Symfony\Bundle\FrameworkBundle\controller\controller的控制器
//在Symfony 2.7中
$this->get('form.factory')->createNamedBuilder(
'stuff\u form.'$i,//将打印get('form.factory')->createNamedBuilder(
"东西(形式)".$i,
StuffType::class,//类的完整限定名(FQCN)
$infos[$i]
);

我认为您最好使用一个表单集合,然后向其传递一个$stuff数组。您最终得到一个表单,持久性或多或少会得到神奇的处理。我认为您最好使用一个表单集合,然后向其传递一个$stuff数组。您最终得到一个表单,持久性或多或少会得到处理ess神奇。谢谢,我不知道你可以像那样传递
type::class
,这就是为什么我宁愿避免createNamedBuilder。你的解决方案很好,ID现在不同了。但是,当我尝试持久化时(提交表单时),只有第一个
Stuff
实体获取值;其他实体为空。知道了吗?知道了:我添加以删除我的小树枝模板中的
表单开始
表单结束
(嵌入表单时)。谢谢,我不知道你可以像那样传递
type::class
,这就是为什么我宁愿避免使用createNamedBuilder。你的解决方案很好,ID现在不同了。但是,当我尝试持久化时(提交表单时),只有第一个
Stuff
实体获取值;其他实体为空。知道了吗?知道了:我添加以删除我的小树枝模板中的
表单开始
表单结束
(嵌入表单时)。
// 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]
);