Контроллер и субконтроллер

Доброго времени суток. Очень надеюсь на Вашу помощь!

Yii 2.0.2. Имеем стандартный SiteController. В нем стандартная авторизация пользователя.

В этой же папке создали AdminController, в котором запрещаем доступ гостям и задаем шаблон оформления.

Далее создали папку admin , а в ней PagesController (controllers/admin/PagesController.php). Нам стал доступен url: localhost/admin/pages.

Вопрос: как для URL localhost/admin/* задать шаблон и запретить доступ гостям из контроллера AdminController, чтобы небыло копи-паста? Как правильно это реализовать?

  1. В инициализации контроллера:



$this->layout = '@app/views/layouts/admin';



2.В контроллерах где закрытый доступ:




public function behaviors()

    {

        return [

            'access' => [

                'class' => AccessControl::className(),

                'rules' => [

                    [

                        'allow' => true,

                        'roles' => ['@'],

                    ],

                ],

            ]

        ];

    }



Спасибо большое! Очень оперативно! )

Как я понимаю, частичного копи-паста не избежать?

Если у вас 2-3 контроллера, проще забить.

Избежать можно, например отнаследовав Admin и Pages контроллеры от общего.




class MyClosedController extends Controller

{

    public function behaviors()

    {

        return [

            'access' => [

                'class' => AccessControl::className(),

                'rules' => [

                    [

                        'allow' => true,

                        'roles' => ['@'],

                    ],

                ],

            ]

        ];

    }

}

...

class AdminController extends MyClosedController

...

class PagesController extends MyClosedController



Можно и RBAC прикрутить, но нужно решить насколько сложной будет система и есть ли в этом необходимость.

Чтож, спасибо Вам огромное за уделенные несколько минут! Аж настроение подняли! ))