/** * Creates a new Cals model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Cals(); $modelsCalitems = [new Calitems()]; if ($model->load(Yii::$app->request->post()) && $model->save()) { $modelsCalitems = Model::createMultiple(Calitems::classname()); Model::loadMultiple($modelsCalitems, Yii::$app->request->post()); // validate all models $valid = $model->validate(); $valid = Model::validateMultiple($modelsCalitems) && $valid; if ($valid) { $transaction = \Yii::$app->db->beginTransaction(); try { if ($flag = $model->save(false)) { foreach ($modelsCalitems as $modelCalitems) { $modelCalitems->cal_id = $model->id; if (!($flag = $modelCalitems->save(false))) { $transaction->rollBack(); break; } } } if ($flag) { $transaction->commit(); return $this->redirect(['view', 'id' => $model->id]); } } catch (Exception $e) { $transaction->rollBack(); } } } else { return $this->render('create', ['model' => $model, 'modelsCalitems' => empty($modelsCalitems) ? [new Calitems()] : $modelsCalitems]); } }