You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							75 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							75 lines
						
					
					
						
							2.0 KiB
						
					
					
				| <?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, | |
|         ]); | |
|     } | |
| }
 | |
| 
 |