コード例 #1
0
ファイル: BaseNews.php プロジェクト: ChristopheBrun/hLib
 /**
  * Contrôle la liste des tags 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 Données de formulaire
  * @return array
  */
 public function updateBaseTagsFromRequest(array &$request)
 {
     $currentRelatedModels = ArrayHelper::getColumn(BaseTag::find()->all(), 'id');
     $updatedRelatedModels = ArrayHelper::getValue($request, 'BaseNews.baseTags', []);
     if ($updatedRelatedModels === "") {
         $updatedRelatedModels = [];
     }
     foreach ($updatedRelatedModels as $i => $value) {
         if (!in_array($value, $currentRelatedModels)) {
             // $value n'est pas l'identifiant d'un tag déjà connu en base mais le libellé d'un nouvel objet
             $newRelatedModel = new BaseTag(['code' => $value]);
             if (!$newRelatedModel->save()) {
                 return false;
             }
             $updatedRelatedModels[$i] = $newRelatedModel->id;
         }
     }
     $request['BaseNews']['baseTags'] = $updatedRelatedModels;
     return true;
 }
コード例 #2
0
 /**
  * Finds the BaseTag model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return BaseTag the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = BaseTag::findOne($id)) !== null) {
         return $model;
     }
     throw new NotFoundHttpException('Modèle introuvable : #' . $id);
 }
コード例 #3
0
 /**
  * Updates an existing WebTag model.
  *
  * @param integer $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 WebTag et du BaseTag associé
         /** @var BaseTag $baseModel */
         if (!($baseModel = BaseTag::findOne($request->post()['WebTag']['base_id']))) {
             $baseModel = new BaseTag();
         }
         $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 initial ou ré-affichage en cas d'erreur
     $baseTags = BaseTag::find()->orderBy('code')->all();
     $languages = Language::find()->orderBy('iso_639_code')->all();
     return $this->render('update', compact('model', 'baseTags', 'languages', 'baseModel'));
 }
コード例 #4
0
ファイル: WebTag.php プロジェクト: ChristopheBrun/hLib
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getBase()
 {
     return $this->hasOne(BaseTag::className(), ['id' => 'base_id']);
 }
コード例 #5
0
ファイル: BaseNewsForm.php プロジェクト: ChristopheBrun/hLib
 /**
  * @return string
  */
 public function run()
 {
     return $this->render('baseNewsForm', ['model' => $this->model, 'baseTags' => BaseTag::find()->orderByCode()->all(), 'asNestedForm' => $this->asNestedForm]);
 }