[modHelpers] Версия 3.2.0
С небольшим опозданием публикую новость о новой версии modHelpers. В ней появился менеджер ответов (Response Manager), файл пользовательских настроек, улучшены функции chunk() и snippet(), а также все классы библиотеки теперь соответствуют стандарту PSR-4 и загружаются через загрузчик композера. Теперь по порядку.
Менеджер ответов
Менеджер ответов (откликов) формирует ответ на запрос пользователя и отправляет его в браузер. По большей части он предназначен для работы в API режиме. Регистрируется он при инициализации MODX и доступен в любом месте приложения. Для работы с ним предназначена функция response(). Менеджер наследует соответствующий класс библиотеки Symfony.
Существует нисколько типов ответов. Перечислю основные:
- Обычный ответ (класс Response). Используется для вывода текстовой информации.
- JSON ответ (класс JsonResponse). Предназначен для вывода массива в JSON формате.
- Файловый ответ (класс BinaryFileResponse). Вид ответа для вывода и скачивания файлов.
Список основных методов перечислен в документации. Наглядно посмотреть как это работает можно в этом видео.
Функции chunk() и snippet()
Теперь в качестве названия файла можно указывать относительный путь. Начинаться он должен с "./". Базовый путь берётся из настроек:
modhelpers_chunks_path
для чанков. По-умолчанию в ней указан путьcore/elements/chunks/
.modhelpers_snippets_path
для сниппетов. По-умолчанию в ней указан путьcore/elements/snippets/
.
//Обычный чанк MODX $output = chunk('myChunk', $placeholders); // Файловый чанк с полным путём $output = chunk(MODX_CORE_PATH . 'chunks/myChunk.tpl', $params); // Файловый чанк с относительным путём $output = chunk('./myChunk.tpl', $params);
Файл настроек
В этой версии добавлен файл config/config.php
, который возвращает массив системных настроек. Он позволяет без использования админки менять и добавлять настройки. Это особенно удобно при разработке и тестировании. Вы можете менять настройки в зависимости от условий.
$settings = []; // Для разработчиков включаем режим отладки if (app('modx')->user->isMember('Developers')) { $settings['debug'] => true; } return $settings;
Классы
Классы теперь соответствуют стандарту PSR-4. Для этого пришлось привести в соответствие имена классов и файлов. Теперь не нужно беспокоиться об их загрузке, композер их подгрузит автоматически при первом обращении. Это справедливо и в случае добавления пользовательских классов, расширяющих базовые классы библиотеки.
Надеюсь, я всё понятно объясняю. :)
Комментарии ()
Вы должны авторизоваться, чтобы оставлять комментарии.
Возник вопрос по библиотеке modHelpers, решил написать, может быть Вы сталкивались с этим.
В общем решил реализовать тестовое restFull приложение с бекендом на MODX, в качестве обработчиков запросов использую middlewares и всё отлично работает, но только с основными методами: GET и POST, а так как REST api
рекомендует использовать ещё и PUT и DELETE как минимум, вот с ними то и проблема:
При этих типах запросов в получаемых параметрах всегда пусто, менеджер запросов request->all()
Тоже показывает, что там пусто.
Узнал, что в Ларе уже давно с этим проблемы и там придумывают кучу костылей кто как может, я нашёл одно, вроде бы, неплохое решение, только не могу его правильно подключить в работу в моём middleware
Если Вам не сложно можете посмотреть это решение? — gist.github.com/devmycloud/df28012101fbc55d8de1737762b70348
А может быть Вы подскажете как лучше реализовать работу с этими типами запросов?
Я думал в MODX есть класс для REST api, и он там есть) но только без реализации всех нужных методов, а только интерфейс… Вот и думаю заюзать Вашу библиотеку по-полной для этих целей.
По поводу REST я бы не изобретал велосипед. Есть официальная документация. И есть готовое решение для роутинга VirtualPage.