在我的应用程序中,我有一个表单来创建ModelA
的实例。
但是,当我提交此表单时,我还想创建一个ModelB
的实例,其中包含来自表单提交的数据。但是,提交后,我想显示已创建的ModelA
的视图。简而言之,我希望以静默方式创建ModelB
。
我尝试在actionCreate()
的{{1}}方法中调用ModelB
的{{1}}方法,方法是在{{1}内创建一个Controller actionCreate()
的实例} B
。然而,这对我来说似乎并不合适。
B
另一种方法是直接在ModelA的actionCreate方法中创建和保存ModelB。但这似乎也不正确,因为存在代码重复,并且由于用户权限操作规则,它具有潜在的危险性。
我的问题是:是否有更好的方法或推荐的方法?如何以安全有效的方式创建ModelA
?
由于
答案 0 :(得分:0)
在一个控制器动作中创建多个模型没有任何问题。如果您拥有在 actionCreate 操作中实例化 ModelB 的所有必要数据,请继续执行此操作。但是你的话“无声地创造它”让我觉得你正试图解决一些可以更有效地解决的问题,而不需要将这两个模型联系起来。
举个例子 - 当一个新用户注册时,你想给他发一封欢迎电子邮件。您可以在控制器中对该行为进行硬编码,但更优雅的解决方案是使用Yii的events内置机制。但当然,这只是猜测。