forms - 从一个表单中插入同一个实体 3 次
问题描述
我正在使用 symfony4,在我的项目中,我有实体 Bill,它提供了两个包:
1)第一包,用户在填写表格并将数据保存到数据库后,只需生成一个PDF格式的账单,并且它有自己的价格。
2)第二包,用户可以在填写表格并将数据保存到数据库后生成PDF格式的三张账单,这也有自己的价格。
第一个包很简单,工作正常,我在控制器中创建了 BillType 和一个动作,一切都很好。
public function newBillFirstPack(Request $request)
{
$entity = new Bill();
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(BillType::class, $entity);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->persist($entity);
$em->flush();
//...............
}
}
return $this->render('frontOffice/bill/new_first_pack.html.twig', array(
'form' => $form->createView()
));
}
问题出在第二包,我想知道如何从一张表格中创建三张账单。我试图创建 3 FormType - FirstBillType 和一个树枝来呈现它的视图。- SecondtBillType 和一个树枝来呈现它的视图。- ThirdBillType 和一根树枝也可以渲染它的视图。
在控制器中,我创建了三个表单。
我还没有测试它,但即使它有效,我也不喜欢它,我认为它不是一个干净的解决方案。想象一下,如果有一天我想编辑 formType 中的一个属性,那么我必须在三个 formsType 和三个 html.twig 视图中编辑它,如果我想在表单中删除或添加一个属性,也是一样的。
我在文档“如何嵌入表单集合”中看到过,但该示例是如何多次嵌入一个属性。
有什么好的解决办法吗?
解决方案
如果我明白你需要什么。新动作可以处理这个问题,并且根据您的需要表单可以运行不同的动作。
public function newBillThirdPack(Request $request)
{
$entity = new Bill();
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(BillType::class, $entity);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->persist($entity);
$em->persist(clone $entity);
$em->persist(clone $entity);
$em->flush();
//...............
}
}
return $this->render('frontOffice/bill/new_third_pack.html.twig', array(
'form' => $form->createView()
));
}
推荐阅读
- c - 尝试在循环语句内的开关中获取多个输入时出错
- python - 有人可以解释一下 __init 或 __init__ 有什么区别(一个之前只有两个下划线,另一个有四个下划线)?
- inno-setup - 威瑞信时间戳服务器是否已关闭?
- pytorch - 如何从 Transformer 中减少 Helsinki-NLP/opus-mt-es-en(翻译模型)的推理时间
- reactjs - 列表中的每个孩子都应该有一个唯一的“关键”道具。如何知道使用单词“key”而不是“key2”
- python - Python3 Playsound Tkinter 代码未按预期顺序运行
- android - Android:Livedata Observer 永远不会被调用,recylerview 列表永远不会提交,navgraphviewmodel
- python - 在 Python 中模拟多个给定多个概率的最快方法?
- java - AAPT:错误:找不到属性 startIconDrawable
- php - 在 Woocommerce 中的特定国家/地区的购物车和结帐总额后显示文本