Middlewares

Эмулятор посредников для MODX
Версия 1.1.1-pl
Дата выпуска 26.02.2021
Загрузки 26
Просмотры 8 633
Это дополнение эмулирует работу посредников. Т.е. создаются дополнительные слои, обрабатывающие запрос. Также они позволяют взаимодействовать с ответом перед выводом его пользователю.
В 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.1-pl

  • Fixed possible fatal error when updating MODX in the cli mode.

1.1.0-pl

  • Added an ability to run listeners before usual MODX plugins.
  • Global middlewares and listeners can be used in the "mgr" context.

1.1.0-beta

  • Adds event listeners based on classes.

1.0.0-pl

  • Initial release.

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