<?php namespace common\modules\pages\controllers; use common\modules\pages\repositories\read\PageReadRepository; use frontend\components\FrontendController; use yii\web\NotFoundHttpException; use yii\filters\AccessControl; class PageController extends FrontendController { private $_pages; public $layout = 'page'; public function __construct($id, $module, PageReadRepository $pages, $config = []) { parent::__construct($id, $module, $config); $this->_pages = $pages; } public function behaviors(): array { return [ 'access' => [ 'class' => AccessControl::class, 'rules' => [ [ 'actions' => ['view'], 'allow' => true, 'roles' => ['Pages'], ], [ 'actions' => ['preview'], 'allow' => true, 'roles' => ['PagesManagement'], ], [ // all the action are accessible to admin 'allow' => true, 'roles' => ['admin'], ], ], ], ]; } /** * @param $id * * @return mixed * @throws NotFoundHttpException * @internal param string $slug */ public function actionView($id) { if (!$page = $this->_pages->find($id)) { throw new NotFoundHttpException('The requested page does not exist.'); } return $this->render('view', [ 'page' => $page, ]); } public function actionPreview($id, $language = '') { if (!$page = $this->_pages->findPreview($id, $language)) { throw new NotFoundHttpException('The requested page does not exist.'); } return $this->render('view', [ 'page' => $page, ]); } }