waController

Обработка HTTP-запросов без обязательного возврата ответа

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

Как правило, контроллеры, созданные на основе класса waController, не предназначены для возврата содержимого в ответ на полученный HTTP-запрос и, как правило, лишь выполняют какие-либо действия, скрытые от пользователя, например, обновляют содержимое базы данных, вносят изменения в пользовательские файлы, выполняют запросы к удаленным ресурсам. Однако, если необходимо, то контроллер может вернуть в ответ на запрос любое содержимое с помощью echo или других аналогичных средств.

Если в ответ на HTTP-запрос необходимо вернуть фрагмент HTML-кода или строку с JSON-ответом, то для этого чаще всего удобно использовать контроллеры, созданные на основе классов waViewAction, waViewActions, waViewController, waJsonController, waJsonActions.

См. правила маршрутизации HTTP-запросов в бекенде и во фронтенде.

Основная логика обработки HTTP-запроса должна быть описана в публичном методе execute().

Контроллеры и экшены

В продукте допускается наличие контроллера и экшена с одинаковыми сочетаниями module_id и action_id. В этом случае контроллер имеет приоритет над экшеном при получении HTTP-запроса, а экшен при получении такого запроса может быть вызван лишь принудительно в коде (этого либо другого) контроллера, когда это необходимо.

Пример такой пары контроллер-экшен:

Методы

public function appSettings ($name, $default = '')

Возвращает значения настроек приложения.

Параметры

Пример

$app_settings = $this->appSettings();

public function configPath ($name, $custom = false)

Возвращает путь к директории с конфигурационными файлами приложения.

Параметры

Пример

$custom_workflow_config = include $this->configPath('workflow.php', true);

public function getApp ()

Возвращает идентификатор приложения, в состав которого входит контроллер.

Пример

$app_id = $this->getApp();

public function getConfig ()

Возвращает используемый в данный момент фреймворком экземпляр класса (waSystemConfig), предназначенного для управления текущей системной конфигурацией.

Пример

$current_domain = $this->getConfig()->getDomain();

public function getPluginRoot ()

Возвращает путь к директории с файлами плагина, в состав которого входит контроллер.

Пример

$plugin_dir = $this->getPluginRoot();

public function getResponse ()

Возвращает используемый в данный момент фреймворком экземпляр класса, предназначенного для формирования ответа на HTTP-запросы.

Пример

$this->getResponse()->redirect($url);

public function getRights ($name = null, $assoc = true)

Возвращает информацию о правах доступа авторизованного пользователя бекенда.

Параметры

Пример

$can_edit = $this->getRights('edit');

public function getStorage ()

Возвращает используемый в данный момент фреймворком экземпляр класса, предназначенного для работы с PHP-сессиями.

Пример

$my_session_var = $this->getStorage()->get('my_session_var');

public function getUser ()

Возвращает экземпляр класса, предназначенного для управления авторизованным пользователем бекенда.

Пример

$user = $this->getUser();

public function getUserId ()

Возвращает идентификатор авторизованного пользователя бекенда.

Пример

$user_id = $this->getUserId();

public function logAction ($action, $params = null, $subject_contact_id = null, $contact_id = null)

Сохраняет в системном хранилище информацию о действии пользователя.

Параметры

Пример

$this->logAction(
    'page_edit',
    array(
        'id'   => 12,
        'name' => 'О компании'
    ),
    null,
    $this->getUserId()
);

protected function preExecute ()

Выполняет произвольные действия до срабатывания основного кода контроллера. Этот метод должен быть реализован разработчиком, если необходимо.

public function redirect ($params = array(), $code = null)

Выполняет перенаправление пользователя на другой URL.

Параметры

Пример

// указание URL в виде строки
$this->redirect('https://'.$this->getConfig()->getDomain(), 301);

// указание URL в виде массива GET-параметров
$this->redirect(array(
    'module' => 'pages',
    'action' => 'edit',
    'id'     => $page_id,
));

public function storage ($name)

Возвращает, изменяет или удаляет значения переменных PHP-сессии.

Параметры

Пример

//получение значения
$this->storage('my_var');
    
//очистка значения
$this->storage('my_var', null);

//изменение значения
$this->storage('my_var', $new_value);