/** * Метод удаления категории блога * Если удаление пройдет успешно, то браузер перенаправится на старницу со списком категорий * @param integer $id уникальный идентификатор категории блога * @return mixed */ public function actionDelete($id) { $model = $this->findModel($id); $model->is_active = (int) FALSE; $model->save(); $articles = Articles::find()->byCategories($id)->all(); foreach ($articles as $article) { $article->is_active = (int) FALSE; $article->save(); } return $this->redirect(['index']); }
/** * Метод просмотра статьи блога * Если статья не будет найдена то будет вызвано 404 исключение * @param integer $id уникальный идентификатор статьи * @throws NotFoundHttpException если запись не будет найдена * @return mixed */ public function actionView($id = FALSE) { if ($id == FALSE && isset($_GET) && array_key_exists('id', $_GET)) { $id = $GET['id']; } elseif ($id == FALSE && !isset($_GET)) { throw new \yii\web\HttpException(404, 'Страница не найдена', 404); } $article = Articles::find()->where(['id' => $id])->active()->one(); if (!$article instanceof Articles) { throw new \yii\web\HttpException(404, 'Страница не найдена', 404); } return $this->render('view', ['article' => $article]); }
/** * Метод поиска статьи по уникальному идентификатору (первичному ключу) * Если статья не будет найдена то будет вызвано 404 исключение * @param integer $id уникальный идентификатор статьи блога * @return articles экземпляр класса Аrticles * @throws NotFoundHttpException если запись не будет найдена */ protected function findModel($id) { if (($model = Articles::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * Метод устанавливает связь один ко многим экземпляра класса с классом Articles */ public function getArticles() { return $this->hasMany(Articles::className(), ['categories__id' => 'id'])->where(['is_active' => 1]); }