/** * Affichage du formulaire de création * * @return mixed */ public function actionCreate() { $model = new BaseText(); if (Yii::$app->request->isPost) { if (!($model->load(Yii::$app->request->post()) && $model->save())) { Yii::$app->session->setFlash('flash-warning', HLib::t('messages', 'There are errors in your form')); } else { return $this->redirect(Url::to(['/cms/web-texts/index'])); } } // Affichage ou ré-affichage return $this->render('create', compact('model')); }
/** * @return \yii\db\ActiveQuery */ public function getBase() { return $this->hasOne(BaseText::className(), ['id' => 'base_id']); }
/** * Contrôle la liste des textes déclarés dans $request[nom_formulaire][relation] et crée s'il le faut de nouveaux objets dans la base. * Renvoie le tableau après avoir remplacé les libellés des nouveaux objets par leur identifiant. * * @param array $request * @return array */ private function processBaseTexts(array &$request) { $currentRelatedModels = ArrayHelper::getColumn(BaseText::find()->all(), 'id'); $updatedRelatedModels = ArrayHelper::getValue($request, 'BasePage.baseTexts', []); if ($updatedRelatedModels === "") { $updatedRelatedModels = []; } foreach ($updatedRelatedModels as $i => $value) { if (!in_array($value, $currentRelatedModels)) { // $value n'est pas l'identifiant d'un texte déjà connu en base mais le libellé d'un nouvel objet $newRelatedModel = new BaseText(['code' => $value]); if (!$newRelatedModel->save()) { return false; } $updatedRelatedModels[$i] = $newRelatedModel->id; } } $request['BasePage']['baseTexts'] = $updatedRelatedModels; return true; }
/** * @return string */ public function run() { return $this->render('basePageForm', ['model' => $this->model, 'baseTexts' => BaseText::find()->orderByCode()->all(), 'parentPages' => BasePage::find()->enabled()->orderBy('code')->all(), 'asNestedForm' => $this->asNestedForm]); }
/** * Affichage du formulaire de modification * * @param int $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModel($id); $request = Yii::$app->request; $ok = true; $baseModel = null; if ($request->isPost) { // Mise à jour du WebText et du BaseText associé /** @var BaseText $baseModel */ if (!($baseModel = BaseText::findOne($request->post()['WebText']['base_id']))) { $baseModel = new BaseText(); } $ok &= $baseModel && $baseModel->load($request->post()) && $baseModel->save(); $ok &= $model->load($request->post()) && $model->save(); if (!$ok) { Yii::$app->session->setFlash('flash-warning', HLib::t('messages', 'There are errors in your form')); } else { Yii::$app->session->setFlash('flash-success', HLib::t('messages', 'Update successful')); if ($request->getBodyParam('action') == 'saveAndBackToList') { return $this->redirect(Url::to([$this->getControllerRoute() . '/index', 'page' => 1])); } } } else { $baseModel = $model->base; } // Affichage ou ré-affichage $baseTexts = BaseText::find()->orderBy('code ASC')->all(); $languages = Language::find()->orderBy('name')->all(); return $this->render('update', compact('model', 'baseTexts', 'languages', 'baseModel')); }