waViewActions

Контроллер-контейнер для нескольких экшенов

Содержание...

Базовый класс — 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.

Методы

public function execute ($action, $params = null)

Выполняет экшен с указанным идентификатором, описанный в этом же PHP-классе.

Параметры

Пример

$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 для установки макета страниц, формируемых всеми экшенами, описанными в данном классе.

Параметры

Пример

$this->setLayout(new myappBackendLayout());

public function setTemplate ($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-шаблон темы дизайна для экшена фронтенда.

Параметры

Пример

$this->setThemeTemplate('page.html');