Войти
29
Май

Пишу одно прлиожение на 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 пятому!

One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Continuing the Discussion

  1. Создаём расширяемую структуру на Yii Framework - концепт расширяемых контроллеров | extending yii framework and CAction | Pais porrada de Bethrezen

    [...] Создаём расширяемую структуру на Yii Framework Written by Bethrezen. No comments Posted in: Code Tagged with caction, dotplant, yii Хочу предложить Вашему вниманию концепт расширяемой структуры приложения на Yii Framework. Я уже писал как сделать свои Actions на Yii. [...]

    16 сентября 200919:36

Some HTML is OK