События

OnZoomxInit

Это событие срабатывает при инициализации компонента ZoomX. Может использоваться для инициализации необходимых объектов. Например, плагинов Smarty.

OnBeforeRouteProcess

Срабатывает перед выполнением обработчика маршрута. В нем можно выполнить определённые проверки и изменить стандартное поведение. В плагине будут доступны 2 переменных:

  • (string) $uri -текущий URI роута.
  • (Zoomx\Routing\Router) $router - объект маршрутизатора (роутера), который содержит данные маршрута. С помощью его метода getRouteVars() можно получить переменные роута (маршрута), указанные в масках. Метод setRouteVars() сохраняет переменные роута для дальнейшего использования.

На самом деле эти переменные хранятся в массиве properties и доступ к ним возможен через одноименные ключи - properties['uri'] и properties['router'].

Например, можно взять из роута id объекта (ресурса, пользователя и т.д) и в плагине получить соответствущий объект. Таким образом в методе контроллера будет уже не id, а готовый объект.

<?php

Namespace Site\Plugins;

class Plugin extends \Zoomx\Elements\Plugin
{
    public static $events = [
        'OnBeforeRouteProcess' => 0,
    ];

    public function OnBeforeRouteProcess($properties)
    {
        // Распаковываем массив в переменные $uri и $router.
        extract($properties); 
        // Получаем переменные маршрута
        $vars = $router->getRouteVars();
        // Получаем объект пользователя по полученному id
        $vars['user'] = $this->modx->getObject('modUser', (int)$vars['user']);
        // Сохраняем новые данные
        $router->setRouteVars($vars);
    }
}

В роуте вы вместо id получите объект пользователя.

$router->get('users/{user:\d+}', function($user) {
    // $user - объект пользователя
    return viewx('user.tpl', ['user' => $user]);

});

OnRequestError

Срабатывает когда вызвана функция abortx или возникла ошибка PHP. Позволяет настроить дополнительный контроль за сайтом. Например, если возникнет 500-я ошибка, отправить уведомление администратору.

Переменные плагина:

  • (string) $error_type - класс объекта ошибки или исключения.
  • (string) $error_code - код ошибки.
  • (string) $error_pagetitle - строка для отображения на сайте.
  • (string) $error_message - описание ошибки.
  • (Exception|Error)$e - объект ошибки.
Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.