В моем приложении у меня есть форма для создания экземпляра ModelA
.Yii - Создать модель на другом контроллере модели
Однако, когда я отправляю эту форму, я также хочу создать экземпляр ModelB
с данными, которые поступают из представления формы. Однако после отправки я хочу показать вид созданного ModelA
. Короче говоря, я хочу, чтобы ModelB
было создано тихо.
Я попробовал подход вызова actionCreate()
из ModelB
в actionCreate()
методом B
, путем создания экземпляра контроллера B
внутри ModelA
«s actionCreate()
. Однако это мне не кажется правильным.
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,
));
}
Другой подход заключается в создании и сохранении ModelB непосредственно в методе actionCreate ModelA. Но это также кажется неправильным, поскольку повторение кода и оно потенциально опасно из-за правил действия пользователя.
Мой вопрос: есть ли лучший подход или подход, рекомендуемый для этого? Как я могу создать ModelB
на стороне безопасным и эффективным способом?
Благодаря
спасибо. Вглядываясь в него. :) – MobileCushion