在我的應用程序中,我有一個表單來創建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