Базовый класс — waController
.
См. правила маршрутизации HTTP-запросов в бекенде и во фронтенде.
Обычно экшены для обработки пользовательских HTTP-запросов и возврата HTML-кода в браузер пользователя оформляются в виде отдельных PHP-классов, унаследованных от waViewAction
. Если же экшены очень простые, то можно объединить их в один класс, унаследованный от waViewActions
.
Каждый экшен в таком классе-контейнере должен быть оформлен в виде отдельного публичного метода, именованного по правилу [action_id]Action
, например:
<?php class myappBackendActions extends waViewActions { public function defaultAction() { //... } public function pageAction() { //... } public function settingsAction() { //... } //... }
Размещение и именование файлов контроллера
Именовать файлы и классы таких контроллеров нужно по правилам, аналогичным тем, которые описаны для класса waViewAction
, за исключением того, что вместо фрагмента action
нужно использовать actions
.
При размещении и именовании файлов HTML-шаблонов руководствуйтесь теми же правилами, что и для waViewAction
.
Методы
-
execute
Выполняет экшен с указанным идентификатором, описанный в этом же PHP-классе.
-
getTemplate
Возвращает путь к файлу HTML-шаблона, используемому данным экшеном в данный момент.
-
getTheme
Возвращает экземпляр класса
waTheme
, содержащего информацию о текущей теме дизайна фронтенда. -
postExecute
Выполняет дополнительные действия после выполнения любого экшена, описанного в данном классе.
-
preExecute
Выполняет дополнительные действия до выполнения любого экшена, описанного в данном классе.
-
setLayout
Устанавливает текущий макет (
waLayout
). -
setTemplate
Устанавливает альтернантивный путь к HTML-шаблону.
-
setThemeTemplate
Устанавливает HTML-шаблон темы дизайна для экшена фронтенда.
public function execute ($action, $params = null)
Выполняет экшен с указанным идентификатором, описанный в этом же PHP-классе.
Параметры
-
$action
Идентификатор экшена.
-
$params
Необязательный массив параметров, которые нужно передать в метод класса, соответствующий указанному экшену.
Пример
$this->execute('page', array( 'id' => $page_id, ));
protected function getTemplate ()
Возвращает путь к файлу HTML-шаблона, используемому данным экшеном в данный момент.
Пример
$current_template = $this->getTemplate();
public function getTheme ()
Возвращает экземпляр класса waTheme
, содержащего информацию о текущей теме дизайна фронтенда.
Пример
$theme = $this->getTheme();
public function postExecute ()
Выполняет дополнительные действия после выполнения любого экшена, описанного в данном классе. Этот метод должен быть реализован разработчиком, если это необходимо.
protected function preExecute ()
Выполняет дополнительные действия до выполнения любого экшена, описанного в данном классе. Этот метод должен быть реализован разработчиком, если это необходимо.
Этот метод удобно использовать для задания макета, который должен использоваться экшенами в данном классе при формировании HTML-кода страницы.
Пример
<?php class myappBackendActions extends waViewActions { public function preExecute() { $this->setLayout(new myappBackendLayout()); } public function defaultAction() { //... } public function pageAction() { //... } //... }
public function setLayout (waLayout $layout = null)
Устанавливает текущий макет (waLayout
).
Это метод удобно использовать в коде метода preExecute для установки макета страниц, формируемых всеми экшенами, описанными в данном классе.
Параметры
-
$layout
Экземпляр класса
waLayout
, который следует использовать для формирования макета страницы, где используется данный экшен.
Пример
$this->setLayout(new myappBackendLayout());
public function setTemplate ($template)
Устанавливает альтернантивный путь к HTML-шаблону. При использовании этого метода экшен может не иметь HTML-шаблона, размещенного и именованного в строгом соответствии с описанными выше правилами.
Параметры
-
$template
Путь к файлу шаблона, который можно указать разными способами:
- полный абсолютный путь к файлу,
- имя HTML-файла без расширения; в этом случае предполагается, что указано имя файла существующего HTML-шаблона данного приложения либо плагина, размещенного и именованного в соответствии с описанными выше правилами.
Примеры
//для приложения $this->setTemplate('BackendOrder'); $this->setTemplate(wa()->getAppPath('templates/actions/backend/BackendOrder', 'someapp'));
//для плагина $this->setTemplate('BackendOrder'); $this->setTemplate(wa()->getAppPath('plugins/myplugin/templates/actions/backend/BackendOrder', 'someapp'));
protected function setThemeTemplate ($template)
Устанавливает HTML-шаблон темы дизайна для экшена фронтенда.
Параметры
-
$template
Имя HTML-файла темы дизайна.
Пример
$this->setThemeTemplate('page.html');