/** * Displays homepage. * * @return mixed */ public function actionIndex($slug = 'index') { // display home page if (empty($slug) || $slug == 'index') { $query = Post::find()->where(['status' => Post::STATUS_PUBLISHED]); $countQuery = clone $query; $pagination = new Pagination(['totalCount' => $countQuery->count(), 'defaultPageSize' => 5]); $posts = $query->offset($pagination->offset)->limit($pagination->limit)->all(); return $this->render('index', ['posts' => $posts, 'pagination' => $pagination]); } //try to display action from controller try { return $this->runAction($slug); } catch (\yii\base\InvalidRouteException $ex) { } //try to display static page from datebase $page = Page::getDb()->cache(function ($db) use($slug) { return Page::findOne(['slug' => $slug, 'status' => Page::STATUS_PUBLISHED]); }, 3600); if ($page) { $pageAction = new PageAction($slug, $this, ['slug' => $slug, 'page' => $page]); return $pageAction->run(); } //try to display post from datebase $post = Post::getDb()->cache(function ($db) use($slug) { return Post::findOne(['slug' => $slug, 'status' => Post::STATUS_PUBLISHED]); }, 3600); if ($post) { $postAction = new PostAction($slug, $this, ['slug' => $slug, 'post' => $post]); return $postAction->run(); } //if nothing suitable was found then throw 404 error throw new \yii\web\NotFoundHttpException('Page not found.'); }