在我的应用程序中,我有一个表单来创建ModelA
的实例。Yii - 在另一个模型控制器上创建模型动作
但是,当我提交此表单时,我还想创建一个ModelB
的实例,其中包含来自表单提交的数据。但是,提交后,我想显示创建ModelA
的视图。总之,我想ModelB
默默创建。
我试图调用的ModelB
actionCreate()
在B
的actionCreate()
方法,通过创建ModelA
的actionCreate()
内部控制器B
的一个实例的做法。然而这对我来说并不合适。
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
?
谢谢
谢谢。看着它。 :) – MobileCushion 2014-10-30 15:53:30