Yii - создание своих типов Action-ов
Пишу одно прлиожение на Yii Framework. Структура приложения такова, что необходимо разграничить экшены контроллеров(CController) по папкам и сделать их типовыми.
Экшены разграничиваются легко.
Предположим, что у нас есть ряд экшенов для администрирования. Всем им надо установить какие-либо свойства или же сделать при их вызове какие-то типовые действия.
Рассмотрим на примере изменения титла страницы.
Вот код моего базового экшена:
В конструкторе мы сначала вызываем parent::__construct с необходимыми параметрами. Это грубо-говоря идёт инициализация базового CAction.
Допустим у нас есть контроллер SettingsController. И нам нужно сделать его на основе нашего экшена. Создаем папку protected/controllers/Settings/. В ней создаем файл ActionAdmin.php с таким вот кодом:
Видите? Нам достаточно только объявить run() и уже всё готово. При загрузке запустится необходимый нам конструктор базового контроллера с нашими действиями.
Вот по такому принципу я разграничиваю например админку в своей CMS на Yii Framework. Слава PHP пятому!
Экшены разграничиваются легко.
Предположим, что у нас есть ряд экшенов для администрирования. Всем им надо установить какие-либо свойства или же сделать при их вызове какие-то типовые действия.
Рассмотрим на примере изменения титла страницы.
Вот код моего базового экшена:
class dotPlantAdminAction extends CAction
{
/**
* Constructor.
* Runs CAction constructor and makes some changes for Admin action type
*/
public function __construct($controller,$id)
{
parent::__construct($controller,$id);
$this->controller->pageTitle = dotPlant::getName() . " - Admin ";
}
public function run()
{
}
}В конструкторе мы сначала вызываем parent::__construct с необходимыми параметрами. Это грубо-говоря идёт инициализация базового CAction.
Допустим у нас есть контроллер SettingsController. И нам нужно сделать его на основе нашего экшена. Создаем папку protected/controllers/Settings/. В ней создаем файл ActionAdmin.php с таким вот кодом:
class ActionAdmin extends dotPlantAdminAction
{
public function run()
{
$this->controller->render('admin');
}
}Видите? Нам достаточно только объявить run() и уже всё готово. При загрузке запустится необходимый нам конструктор базового контроллера с нашими действиями.
Вот по такому принципу я разграничиваю например админку в своей CMS на Yii Framework. Слава PHP пятому!
-
Bethrezen,
- 24 июня 2009, 16:45
- рейтинг: +2

- xoma
- 24 июня 2009, 17:18
я аналогично поступаю с контроллерами — для админки — один базовый контроллер, для паблик части — другой
Комментарии (1) свернуть | развернуть