Middlewares

Эмулятор посредников для MODX
Версия 1.1.0-beta
Дата выпуска 16.09.2017
Загрузки 7
Просмотры 660
Внимание, этот компонент требует версию PHP 5.3 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Это дополнение эмулирует работу посредников. Т.е. создаются дополнительные слои, обрабатывающие запрос. Также они позволяют взаимодействовать с ответом перед выводом его пользователю.
В Middlewares доступны 2 типа объектов — посредники и обработчики событий.

Посредники

Посредники бывают глобальными, обрабатывающие каждый запрос, и ресурсными, которые срабатывают только для указанных ресурсов. Первые указываются в системной настройке middlewares_global_middlewares — нужно указать их через запятую в нужной последовательности. Вторые указываются в специальной TV ресурса под названием middlewares. В качестве имени посредника указывается название файла класса без расширения .php.

Посредники представляют собой классы, которые размещаются в папке, указанной в системной настройке middlewares_path. Вот пример класса посредника:
// Файл test.php

class TestMiddleware extends Middlewares\Middleware
{
    public function onRequest() {}

    public function beforeResponse() {}

    public function afterResponse() {}
}

return 'TestMiddleware';
Класс посредника должен наследоваться от абстрактного класса Middlewares\Middleware. В классе доступен объект $this->modx. Метод onRequest() будет вызван на событие OnMODXInit для глобального посредника и на событие OnLoadWebDocument для посредника ресурса.

Метод beforeResponse() посредника вызывается на событие OnWebPagePrerender, метод OnWebPageComplete() — на событие OnWebPageComplete.

Обработчики событий

Обработчики событий представляют собой классы PHP и предназначены для замены плагинов MODX. Для того, чтобы обработчик сработал на определённое событие, нужно создать одноименный метод.
К сожалению, до версии MODX 2.5.8 из-за бага в ядре системы этот функционал не работает.

Статья на modx.pro.

1.1.0-beta

  • Adds event listeners based on classes.

1.0.0-pl

  • Initial release.

Последние обсуждения в сообществе MODX.pro