Yii - создание своих типов Action-ов

Yiiframework 24 июня 2009 г., 20:45

Пишу одно прлиожение на Yii Framework. Структура приложения такова, что необходимо разграничить экшены контроллеров(CController) по папкам и сделать их типовыми.
Экшены разграничиваются легко.
Предположим, что у нас есть ряд экшенов для администрирования. Всем им надо установить какие-либо свойства или же сделать при их вызове какие-то типовые действия.
Рассмотрим на примере изменения титла страницы.
Вот код моего базового экшена:

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 dotPlant на Yii Framework. Слава PHP пятому!

Теги: CAction yii Bethrezen 3


Комментарии 4

tiburon
tiburon
Привет, есть пара вопросов по Yii, начал с ней потихоньку разбираться. Поможешь?
xoma
xoma
Привет! Конечно помогу, если смогу =) Я тут форум прикрутил talk.allframeworks.ru/ — если так удобней, то можно и там что-то обсуждать =)
tiburon
tiburon
Лучше я буду публиковать статьи или типа того + общаться в личке. Сначала опишу что хочу получить в итоге, а потом поэтапно расписывать что делаю. Идет и тебе контент и мне польза.
xoma
xoma
Ну это прямо идеально =) Давай конечно, поддержу/помогу чем смогу!
Пожалуйста, авторизуйтесь или зарегистрируйтесь для комментирования!