Как правило, контроллеры, созданные на основе класса waController, не предназначены для возврата содержимого в ответ на полученный HTTP-запрос и, как правило, лишь выполняют какие-либо действия, скрытые от пользователя, например, обновляют содержимое базы данных, вносят изменения в пользовательские файлы, выполняют запросы к удаленным ресурсам. Однако, если необходимо, то контроллер может вернуть в ответ на запрос любое содержимое с помощью echo или других аналогичных средств.
Если в ответ на HTTP-запрос необходимо вернуть фрагмент HTML-кода или строку с JSON-ответом, то для этого чаще всего удобно использовать контроллеры, созданные на основе классов waViewAction, waViewActions, waViewController, waJsonController, waJsonActions.
См. правила маршрутизации HTTP-запросов в бекенде и во фронтенде.
Основная логика обработки HTTP-запроса должна быть описана в публичном методе execute().
Контроллеры и экшены
В продукте допускается наличие контроллера и экшена с одинаковыми сочетаниями module_id и action_id. В этом случае контроллер имеет приоритет над экшеном при получении HTTP-запроса, а экшен при получении такого запроса может быть вызван лишь принудительно в коде (этого либо другого) контроллера, когда это необходимо.
Пример такой пары контроллер-экшен:
Методы
-
appSettings
Возвращает значения настроек приложения.
-
configPath
Возвращает путь к директории с конфигурационными файлами приложения.
-
getApp
Возвращает идентификатор приложения, в состав которого входит контроллер.
-
getAppId
Синоним метода getApp.
-
getConfig
Возвращает используемый в данный момент фреймворком экземпляр класса, предназначенного для управления текущей системной конфигурацией.
-
getPluginRoot
Возвращает путь к директории с файлами плагина, в состав которого входит контроллер.
-
getResponse
Возвращает используемый в данный момент фреймворком экземпляр класса, предназначенного для формирования ответа на HTTP-запросы.
-
getRights
Возвращает информацию о правах доступа авторизованного пользователя бекенда.
-
getStorage
Возвращает используемый в данный момент фреймворком экземпляр класса, предназначенного для работы с PHP-сессиями.
-
getUser
Возвращает экземпляр класса, предназначенного для управления авторизованным пользователем бекенда.
-
getUserId
Возвращает идентификатор авторизованного пользователя бекенда.
-
logAction
Сохраняет в системном хранилище информацию о действии пользователя.
-
preExecute
Выполняет произвольные действия до срабатывания основного кода контроллера.
-
redirect
Выполняет перенаправление пользователя на другой URL.
-
storage
Возвращает, изменяет или удаляет значения переменных PHP-сессии.
public function appSettings ($name, $default = '')
Возвращает значения настроек приложения.
Параметры
-
$name
Идентификатор поля настроек.
-
$default
Значение настройки по умолчанию, которое должно быть возвращено в случае отсутствия значения настройки с указанным идентификатором.
Пример
$app_settings = $this->appSettings();
public function configPath ($name, $custom = false)
Возвращает путь к директории с конфигурационными файлами приложения.
Параметры
-
$name
Имя конфигурационного файла.
-
$custom
Флаг, обозначающий необходимость вернуть путь к конфигурационному файлу в пользовательской директории
wa-config/apps/[app_id]/. По умолчанию возвращается путь к файлу в основной директории с файлами исходного кода приложенияwa-apps/[app_id]/lib/config/.
Пример
$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)
Возвращает информацию о правах доступа авторизованного пользователя бекенда.
Параметры
-
$name
Строковый идентификатор прав доступа, определенный для указанного приложения. Если не указано, метод вернет все значения прав доступа для данного контакта. Если в конце идентификатора прав доступа добавлен символ %, то значения прав доступа для данного идентификатора будут получены в виде массива. Структура массива формируется в зависимости от значения параметра
$assoc. -
$assoc
Флаг, использующийся для формирования массива значений множественных прав доступа:
- true (значение по умолчанию): в качестве ключей массива используются идентификаторы полей множественного права доступа, включенных для данного пользователя, а в качестве значений — число 1.
- false: ключи массива нумеруются автоматически начиная с 0, а в качестве значений элементов массива используются идентификаторы полей множественного права доступа, включенных для данного пользователя.
Пример
$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)
Сохраняет в системном хранилище информацию о действии пользователя.
Параметры
-
$action
Строковый идентификатор действия.
-
$params
Произвольный массив параметров, связанных с данным действием.
-
$subject_contact_id
Числовой идентификатор контакта, по отношению к которому пользователем было выполнено действие.
-
$contact_id
Числовой идентификатор контакта авторизованного пользователя.
Пример
$this->logAction(
'page_edit',
[
'id' => 12,
'name' => 'О компании'
],
null,
$this->getUserId()
);
protected function preExecute ()
Выполняет произвольные действия до срабатывания основного кода контроллера. Этот метод должен быть реализован разработчиком, если необходимо.
public function redirect ($params = [], $code = null)
Выполняет перенаправление пользователя на другой URL.
Параметры
-
$params
URL в виде строки, на который нужно выполнить перенаправление, либо ассоциативный массив GET-параметров для формирования такого URL и перенаправления на него в пределах текущего доменного имени.
-
$code
Код ответа, который должен отдавать сервер при выполнении перенаправления. Если не указан, по умолчанию используется код ответа 302.
Пример
// указание URL в виде строки
$this->redirect('https://'.$this->getConfig()->getDomain(), 301);
// указание URL в виде массива GET-параметров
$this->redirect([
'module' => 'pages',
'action' => 'edit',
'id' => $page_id,
]);
public function storage ($name)
Возвращает, изменяет или удаляет значения переменных PHP-сессии.
Параметры
-
$name
Строковый идентификатор переменной сессии.
-
$value
Если этот параметр не указан, то метод возвращает значение переменной. Если указано значение
null, то значение переменной очищается. Если указано иное значение, то оно присваивается переменной.
Пример
//получение значения
$this->storage('my_var');
//очистка значения
$this->storage('my_var', null);
//изменение значения
$this->storage('my_var', $new_value);









