Yii - 在另一个模型控制器动作上创建模型

时间:2014-10-30 12:04:13

标签: php yii yii2 yii-components

在我的应用程序中,我有一个表单来创建ModelA的实例。

但是,当我提交此表单时,我还想创建一个ModelB的实例,其中包含来自表单提交的数据。但是,提交后,我想显示已创建的ModelA的视图。简而言之,我希望以静默方式创建ModelB

我尝试在actionCreate()的{​​{1}}方法中调用ModelB的{​​{1}}方法,方法是在{{1}内创建一个Controller actionCreate()的实例} B。然而,这对我来说似乎并不合适。

B

另一种方法是直接在ModelA的actionCreate方法中创建和保存ModelB。但这似乎也不正确,因为存在代码重复,并且由于用户权限操作规则,它具有潜在的危险性。

我的问题是:是否有更好的方法或推荐的方法?如何以安全有效的方式创建ModelA

由于

1 个答案:

答案 0 :(得分:0)

在一个控制器动作中创建多个模型没有任何问题。如果您拥有在 actionCreate 操作中实例化 ModelB 的所有必要数据,请继续执行此操作。但是你的话“无声地创造它”让我觉得你正试图解决一些可以更有效地解决的问题,而不需要将这两个模型联系起来。

举个例子 - 当一个新用户注册时,你想给他发一封欢迎电子邮件。您可以在控制器中对该行为进行硬编码,但更优雅的解决方案是使用Yii的events内置机制。但当然,这只是猜测。