Php Yii-在另一个模型控制器操作上创建模型
在我的应用程序中,我有一个表单来创建Php Yii-在另一个模型控制器操作上创建模型,php,yii,yii2,yii-components,Php,Yii,Yii2,Yii Components,在我的应用程序中,我有一个表单来创建ModelA的实例 但是,当我提交此表单时,我还希望使用表单提交中的数据创建一个ModelB实例。但是,在提交之后,我想显示创建的ModelA的视图。简而言之,我希望以静默方式创建ModelB 我尝试了在actionCreate()方法中调用actionCreate()模型B的actionCreate()的方法,方法是在ModelA的actionCreate()内部创建一个ControllerB实例。然而,这对我来说似乎并不正确 public function
ModelA
的实例
但是,当我提交此表单时,我还希望使用表单提交中的数据创建一个ModelB
实例。但是,在提交之后,我想显示创建的ModelA
的视图。简而言之,我希望以静默方式创建ModelB
我尝试了在actionCreate()
方法中调用actionCreate()
模型B的actionCreate()
的方法,方法是在ModelA
的actionCreate()
内部创建一个ControllerB
实例。然而,这对我来说似乎并不正确
public function actionCreate(){
$model = new ModelA;
if(isset($_POST['ModelA'])) {
$model->attributes = $_POST['ModelA'];
$modelB = new ModelB("create");
$res = $modelB->actionCreate();
if($res && $model->save()){
$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('create',array(
'model'=>$model,
));
}
另一种方法是直接在ModelA的actionCreate方法中创建和保存ModelB。但这似乎也是不对的,因为存在代码重复,而且由于用户权限操作规则的存在,这可能是危险的
我的问题是:有没有更好的方法,或者推荐一种方法来做到这一点?如何以安全有效的方式在侧面创建ModelB
谢谢在一个控制器操作中创建多个模型没有什么错。如果您拥有在actionCreate操作中实例化ModelB所需的所有数据,请继续并执行。但是你说的“默默地创造”让我觉得你在试图解决一些问题,这些问题可以更有效地解决,而不需要将这两个模型耦合太多
举个例子——当一个新用户注册后,你想给他发送一封欢迎电子邮件。您可以在控制器中对该行为进行硬编码,但更优雅的解决方案是利用Yii的内置操作机制。当然,这只是猜测。谢谢。调查它。:)