Skip to content

Fix DocumentDataManagerController not found for legacy class_key - #6

Open
Ibochkarev wants to merge 1 commit into
3.xfrom
fix/issue-15080-document-data-controller
Open

Fix DocumentDataManagerController not found for legacy class_key#6
Ibochkarev wants to merge 1 commit into
3.xfrom
fix/issue-15080-document-data-controller

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Aug 21, 2026

Copy link
Copy Markdown
Member

Что сделано

Resource Overview (resource/data) выбрасывал Class 'DocumentDataManagerController' not found, когда ресурс хранил устаревший короткий class_key modDocument (часто для API/extra-create) или когда class_key присутствовал в запросе.

ResourceManagerController::getInstance() трактовал такие ключи как производные и переписывал имя контроллера через getAlias(), но в отличие от create/update (modxcms#15997) у data-контроллера не было алиаса DocumentDataManagerController. Короткие ключи также ломали STI-lookup, когда обзор грузился через modDocument::class.

Это изменение:

  • Трактует короткие и FQCN ключи core document как не-производные в getInstance().
  • Добавляет алиас DocumentDataManagerController (паритет с create/update).
  • Грузит обзор через modResource::class, чтобы короткие ключи продолжали резолвиться.
  • Сохраняет существующий rewrite неправильных modResource / коротких modResource ключей (не переписывает короткий modDocument на GET).

Как проверить

  1. Создайте ресурс с class_key = modDocument (короткий), откройте Manager → Overview для него. Ожидание: без ошибки class-not-found.
  2. Откройте ?a=resource/data&id=1&class_key=MODX\Revolution\modDocument (и с коротким modDocument). Ожидание: data-контроллер грузится.
  3. Overview для Weblink. Ожидание: WebLinkDataManagerController по-прежнему.
  4. Gate E:
    • php -l manager/controllers/default/resource/resource.class.php → exit 0
    • php -l manager/controllers/default/resource/data.class.php → exit 0
    • core/vendor/bin/phpunit -c _build/test/phpunit.xml --filter ResourceManagerControllerGetInstanceTest --no-coverage → OK (9 тестов, 27 assertions)
    • core/vendor/bin/phpcs --standard=phpcs.xml _build/test/Tests/Controllers/Resources/ResourceManagerControllerGetInstanceTest.php → exit 0

Связанные

Refs modxcms#15080
Связанные: modxcms#16004 / modxcms#15997 (алиасы DocumentCreate/DocumentUpdate). Контекст короткого class_key Collections: modxcms/Collections#353.

Совместимость

Универсально. Помогает установкам/экстра, которые всё ещё хранят короткий modDocument. Не мигрирует существующие строки короткого modDocument на overview GET.

Оригинал: modxcms#17008

Treat short modDocument/modResource as core documents in getInstance, add the DocumentData alias (parity with create/update), and load overview via modResource so STI still resolves short keys.
@Ibochkarev Ibochkarev changed the title Фикс DocumentDataManagerController not found для устаревшего class_key Fix DocumentDataManagerController not found for legacy class_key Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant