Prism - Действие не указано!

Приветствую. Вопрос по проблеме Prism. Суть проблемы и решение, возможно костыльное, пусть нейрослопное, но всё же. Возможно автор дополнения подскажет решение. На более низкой версии Modx не проверял.
Prism 1.4.1 — «Компоненты → Prism» падает с ошибкой «Действие не указано!»
Среда: MODX 3.2.4-pl, PHP 8.4.12, Prism 1.4.1 (транспортный пакет из Modstore), тема менеджера default.
Описание. При открытии «Компоненты → Prism» (или напрямую manager/?a=home&namespace=prism) вместо страницы настроек — ошибка «An error occurred… Действие не указано!». Не помогает переустановка, полное удаление с установкой и очистка кеша. Воспроизводится стабильно.
Причина — несовпадение пространства имён класса контроллера с соглашением MODX об именах:
1. core/components/prism/controllers/home.class.php объявляет класс в namespace Prism\Vendor — полное имя Prism\Vendor\PrismHomeManagerController.
2. Ядро (modManagerResponse::getControllerClassName()) ищет контроллер в глобальном NS по шаблону ManagerController → PrismhomeManagerController. Файл controllers/home.class.php ядро находит и подключает корректно (поиск по <namespace_path>controllers/ работает), но после require_once класс существует только как Prism\Vendor\PrismHomeManagerController, class_exists('PrismhomeManagerController') возвращает false → NotFoundException → страница ошибки с лексиконом action_err_ns.
3. bootstrap.php регистрирует Composer-автозагрузку только для Prism\ → src/ (контроллеры не покрывает) и не делает class_alias — «договориться» с ядром нечем.
Решение (любое из):
1. Минимальное: добавить в конец controllers/home.class.php:
\class_alias(\Prism\Vendor\PrismHomeManagerController::class, 'PrismHomeManagerController');
2. «По канону» MODX: объявить класс контроллера в глобальном NS (убрать namespace Prism\Vendor;), как принято для контроллеров менеджера.
3. Либо class_alias в bootstrap.php (менее желательно — грузится на каждом запросе).
Временный workaround (применён у нас): вариант 1 вписан вручную в home.class.php — страница настроек открывается штатно (вкладки «Состояние / Пресеты превью / Пользовательские поля / Вывод»). Затирается при обновлении пакета — хотелось бы исправление в релизе.
Madao
Madao
1 час назад
modx.pro
6

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0