С небольшим опозданием публикую новость о новой версии 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. Для этого пришлось привести в соответствие имена классов и файлов. Теперь не нужно беспокоиться об их загрузке, композер их подгрузит автоматически при первом обращении. Это справедливо и в случае добавления пользовательских классов, расширяющих базовые классы библиотеки.

    Надеюсь, я всё понятно объясняю. :)

    16 января 2018, 11:56   354     2

    Комментарии ()

    1. Семён 09 апреля 2018, 17:30 # 0
      Сергей, приветствую!
      Возник вопрос по библиотеке modHelpers, решил написать, может быть Вы сталкивались с этим.
      В общем решил реализовать тестовое restFull приложение с бекендом на MODX, в качестве обработчиков запросов использую middlewares и всё отлично работает, но только с основными методами: GET и POST, а так как REST api
      рекомендует использовать ещё и PUT и DELETE как минимум, вот с ними то и проблема:
      При этих типах запросов в получаемых параметрах всегда пусто, менеджер запросов request->all()
      Тоже показывает, что там пусто.
      Узнал, что в Ларе уже давно с этим проблемы и там придумывают кучу костылей кто как может, я нашёл одно, вроде бы, неплохое решение, только не могу его правильно подключить в работу в моём middleware
      Если Вам не сложно можете посмотреть это решение? — gist.github.com/devmycloud/df28012101fbc55d8de1737762b70348
      А может быть Вы подскажете как лучше реализовать работу с этими типами запросов?
      Я думал в MODX есть класс для REST api, и он там есть) но только без реализации всех нужных методов, а только интерфейс… Вот и думаю заюзать Вашу библиотеку по-полной для этих целей.
      1. Сергей Шлоков 09 апреля 2018, 20:22 # 0
        Методы PUT, PATCH и DELETE включаются в настройках веб-сервера. В Laravel сделали элегантное решение, если нет такой возможности — указывать в форме скрытое поле с названием метода.
        По поводу REST я бы не изобретал велосипед. Есть официальная документация. И есть готовое решение для роутинга VirtualPage.

      Вы должны авторизоваться, чтобы оставлять комментарии.

      Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.