Symfony-根据按下的按钮创建或编辑表单

时间:2018-09-17 14:31:42

标签: symfony

我正在创建一个表单,该表单在保存时会进行更新,并在编辑时更新当前和任何相关实体(简单!),我有两个按钮,即'更新现有版本''创建新版本”

如果单击“创建新版本”,则基本上需要将表单中的所有内容都创建为全新版本(现有版本的副本,但版本整数增加了一个),而如果单击“更新”,它很乐意更新现有实体。

在Symfony中,该表单是使用$this->createForm(<class>, <data>)创建的,如果我将一个新的类实体传递给数据,那么它将创建一个新的类实体,如果我传递了一个现有的实体,它将进行更新。

但是,直到处理完该请求后,我才知道该表单是用于新版本还是要更新该按钮的当前版本,这意味着该表单已经创建并初始化了。

如果是新版本,我还需要以某种方式将所有相关实体更新为新版本。

我认为这应该是相对简单的,我缺少明显的东西。

我正在使用Symfony表单集合来生成表单。

有人可以帮忙吗?

谢谢

凯文

1 个答案:

答案 0 :(得分:0)

以防万一人们遇到这个问题。

我只是在表单处理过程中检查了按下按钮的位置,然后克隆了实体。

然后,我在实体中创建了一个__clone函数,用于处理它所具有的关系(基本上遍历了相关实体,对其进行了克隆,并将父级更改为$ this)。

就是这样,其他所有东西都正常工作