Документация InstantCMS

для администраторов и разработчиков

Инструменты пользователя

Инструменты сайта


dev:controllers:custom

Переопределение контроллеров

Как мы знаем, основной файл frontend-контроллера это файл /system/controllers/{имя компонента}/frontend.php. Иногда может возникнуть потребность, не внося изменений в этот файл, дополнить функциональность контроллера или вовсе его изменить. Для этого в CMS можно создать файл /system/controllers/{имя компонента}/custom.php.

Класс контроллера

В этом файле вы должны определить класс {имя компонента}_custom, унаследовав его от класса контроллера, объявленного в основном файле frontend-контроллера.

В простейшем случае класс выглядит так:

class shop_custom extends shop {
 
    public function __construct($request) {
 
        $this->name = str_replace('_custom', '', strtolower(get_called_class()));
 
        parent::__construct($request);
    }
 
}

где shop - название компонента, совпадающие с названием его папки. Конструктор класса обязателен, в примере показано его минимальное содержимое.

Конечно же, вы можете унаследовать класс и от системного класса cmsFrontend и реализовать полностью свою логику выбранного компонента, также, как бы вы это делали в файле /system/controllers/{имя компонента}/frontend.php.

Определение действий

В этом файле вы можете переопределить/дополнить любой метод класса, начиная от основного контроллера (cmsController), заканчивая непосредственно вашим основным контроллером. Вы можете переопределить любой экшен, даже если он находится не в основном классе, а в папке actions директории контроллера.

Таким образом, вы можете переопределить любое поведение выбранного контроллера.


Вернуться к оглавлению

dev/controllers/custom.txt · Последние изменения: 03.03.2016 22:25 — fuze