MODX. Ошибки после обновления MODX до версии 2.7

Исправление ошибки «modAction support is deprecated»

Вольный перевод статьи Марка Хармста

После обновления до версии 2.7 журнал ошибок MODX начнет показывать новые сообщения о том, что разные вещи устарели. Некоторые примеры того, с чем вы могли столкнуться:

  • modAction support is deprecated since version 2.3.0. Support for modAction has been replaced with routing based on a namespace and action name. Please update the extra with the namespace <namespace> to the routing based system. (Поддержка modAction устарела с версии 2.3.0. Поддержка modAction была заменена маршрутизацией на основе пространства имен (namespace) и action name. Обновите дополнительное пространство имен <namespace> в системе на основе маршрутизации.)
  • Flat file processor support is deprecated since version 2.7.0. (Поддержка файлового процессора (Flat file processor) устарела с версии 2.7.0.
  • Flat file processor support, used for action mgr/resources/getlist with path path/to/action.php, is deprecated since version 2.7.0. (Поддержка файлового процессора (Flat file processor), используемая для действия mgr/resources/getlist с пути path/to/action.php, устарела с версии 2.7.0.)
  • modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead. (modRestClient:: __construct устарела с версии 2.3.0. Вместо этого используйте классы modRest.)
  • Old modTemplateVar getRender inputmethod is deprecated since version 2.2.0. (Устаревший modTemplateVar getRender inputmethod)

Хотя эти сообщения относятся к журнал ошибок MODX, их также можно увидеть при установке пакетов (особенно сообщения о modAction и modRestClient).

Что это значит?

В основном эти ошибки выдают те функции, которые находятся в списке на удаление из MODX в будущей версии. Вполне вероятно что этим выпуском станет MODX 3.0, но это не точно.

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

Ошибки лучше выявить заранее, нежели после обновления, когда ваш сайт действительно сломается. 

Как узнать, что нужно для исправления?

Надеемся, что в сообщениях содержится достаточно деталей, обьясняющих, где проблема. К сожалению, это не всегда так, например, с сообщением о Flat file процессоре (которое должно быть более четким в 2.7.1 ) и довольно неопределенным «старым способом ввода modTemplateVar getRender», который в большинстве случаев оказался ложным.

Больше всего надеемся, что вы увидите, что «modAction support since version 2.3.0 is deprecated», и сообщения «Flat file processor support is deprecated since version 2.7.0» 

(Примечание переводчика: информация о том как правильно создавать страницы CMP с версии 2.3)

В сообщении modAction вы увидите упомянутое пространство имен, которое должно соответствовать одному из ваших дополнительных компонентов или кастомных приложений.

Как только выйдет 2.7.1, поддержка «Flat file processor support» (что означает, что процессор не использует класс modProcessor) должен стать редкостью, поскольку он больше не будет запускаться при каждом запросе панели менеджера, а также будет содержать фактический файл процессора, который был вызван. Это должно точно указать, какая дополнительная функция (или основная, которая не исключена) виновата и нуждается в некоторой доработке.

Я разработчик, как я могу исправить свои компоненты?

Вот некоторые ресурсы для начала работы:

Нужно ли обновлять файлы с плоских файлов (flat file) на классы? (примечание переводчика: flat file — файлы без дополнительной разметки. В данном случае похоже имеются ввиду процессоры без использования ООП и постфикса class в названии.)

Нужно ли отходить от modAction?

  • Если вы уже используете классы modManagerController, вам, вероятно, придется только изменить сценарий сборки, чтобы не создавать modAction + modMenu, а только экземпляр modMenu с именем вашего класса контроллера (например, «index») в качестве действия и ваше пространство имен.
  • Если вы используете контроллеры с плоским файловым менеджером, начните с кастомизации страниц менеджера в 2.3

Используете modRestClient? Вот суть использования modRest вместо того, чтобы говорить про API.

(Примечание: тем кто не в курсе все же полезно заглянуть в документацию о RESTful API MODX).

Можно ли отключить устаревшие уведомления?

Да, есть новая настройка, log_deprecated которую вы можете изменить. Когда она дезактивирована, вы больше не будете получать никаких устаревших уведомлений в своих журналах. Однако, лучше оставить его, по крайней мере на некоторое время, чтобы узнать, какие функции требующие обновления использует ваш сайт. Сообщите эти записи разработчикам дополнительных компонентов, которые вы используете, чтобы убедиться, что они знают что их нужно решать. Это дает и вам и им время на исправление проблем, задолго до официального выхода MODX 3.