Skip to content

[Feature] Вынести ExtraFields CRUD из closures manager.php в контроллер #355

Closed

Description

@Ibochkarev

Описание функции

Убрать бизнес-логику и DB из route-closures /extra-fields в config/routes/manager.php. Closures только диспатчат в контроллер/сервис.

Проблема, которую решает

manager.php ~1219 LOC, ~154 closures. Блок /extra-fields (~L164–288) инлайнит CRUD: читает body, зовёт сервисы, getObject — wrong layer. Остальные домены уже чаще делают new XController($modx)->method().

Это кусок #341 (единый Response envelope): пока логика в closures, легко вернуть raw processor payload и обойти канонический слой.

Предлагаемое решение

  1. Перенести handlers в Controllers/Api/Manager/ExtraFieldsController (или расширить существующий, если есть).
  2. Использовать уже существующий ExtraFields service из DI (ServiceRegistry / [Feature] ServiceRegistry: factory map вместо switch/in_array #345 — зарегистрировать, если сейчас new в routes).
  3. Routes: тонкие closures → controller methods → Response::*.
  4. Не разбивать весь manager.php на файлы в этом issue (можно follow-up); цель — удалить толстый extra-fields кусок.

Альтернативные варианты

  • Split routes/manager/*.php сразу — шире scope.
  • Оставить inline «потом» — долг растёт с каждым endpoint.

Критерии приёмки

  • В manager.php для extra-fields нет getObject / разбора body (только dispatch).
  • Поведение REST extra-fields без breaking changes.
  • Ответы через Response ([Feature] Единый Response envelope на HTTP boundary #341 alignment).
  • php -l на новых/изменённых файлах.

Дополнительный контекст

Связано: #341, #345. Не смешивать с Vue ExtraFieldsManager UI-рефакторингом.

Activity

  1. added
    priority: mediumСредний приоритет
    enhancementNew feature or request
    tech-debtMaintainability / refactor / architecture debt
    on Jul 15, 2026
  2. self-assigned this
    on Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestpriority: mediumСредний приоритетtech-debtMaintainability / refactor / architecture debt

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions