/** * Creates a new Usuario model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $user = new Usuario(); $inst = new Institucion(); $cont = new Contacto(); $dir = new Direccion(); $repr = new Representante(); $modelsConocimientos = [new Conocimiento()]; $institucion = ArrayHelper::map(Institucion::find()->all(), 'id_institucion', 'nombre'); if ($user->load(Yii::$app->request->post()) && $cont->load(Yii::$app->request->post()) && $dir->load(Yii::$app->request->post()) && $repr->load(Yii::$app->request->post())) { $modelsConocimientos = Model::createMultiple(Conocimiento::classname()); Model::loadMultiple($modelsConocimientos, Yii::$app->request->post()); // ajax validation if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ArrayHelper::merge(ActiveForm::validateMultiple($modelsConocimientos), ActiveForm::validate($user)); } // validate all models $valid = $user->validate(); $valid = Model::validateMultiple($modelsConocimientos) && $valid; if ($valid) { $transaction = \Yii::$app->db->beginTransaction(); try { if ($flag = $user->save(false)) { foreach ($modelsConocimientos as $modelConocimientos) { $modelConocimientos->Usuarioid_usuario = $user->id_usuario; if (!($flag = $modelConocimientos->save(false))) { $transaction->rollBack(); break; } } } if ($flag) { $transaction->commit(); return $this->redirect(['view', 'id' => $user->id_usuario]); } } catch (Exception $e) { $transaction->rollBack(); } } $user->save(); $cont->Usuarioid_usuario = $user->id_usuario; $dir->Usuarioid_usuario = $user->id_usuario; $repr->Usuarioid_usuario = $user->id_usuario; if ($repr->save() && $cont->save() && $dir->save()) { return $this->redirect(['view', 'id' => $user->id_usuario]); } else { return $this->redirect(['index', 'id' => $user->id_usuario]); } } else { return $this->render('create', ['user' => $user, 'cont' => $cont, 'dir' => $dir, 'repr' => $repr, 'institucion' => $institucion, 'modelsConocimientos' => empty($modelsConocimientos) ? [new Conocimiento()] : $modelsConocimientos]); } }