Skip to content

refactor(mgr-api): extract extra-fields CRUD into controller - #491

Open
Ibochkarev wants to merge 1 commit into
betafrom
feat/issue-355-extra-fields-controller
Open

refactor(mgr-api): extract extra-fields CRUD into controller#491
Ibochkarev wants to merge 1 commit into
betafrom
feat/issue-355-extra-fields-controller

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

CRUD /api/mgr/extra-fields вынесен из толстых closure в ExtraFieldsController. Маршруты только диспатчат в контроллер. Сервис ExtraFieldsService зарегистрирован в DI как ms3_extra_fields; добавлен getField() с общим formatField() для column_exists.

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #355

Как это было протестировано?

php -l core/components/minishop3/src/Controllers/Api/Manager/ExtraFieldsController.php
php -l core/components/minishop3/src/Services/ExtraFieldsService.php
php -l core/components/minishop3/config/routes/manager.php
# exit 0

cd core/components/minishop3 && composer test:smoke
# OK smoke tests (27), включая ExtraFieldsControllerRoutesTest
  • Ручное тестирование
  • Автоматические тесты (composer test:smoke)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: ветка feat/issue-355-extra-fields-controller
  • MODX: n/a (smoke без полной установки)
  • PHP: 8.2+

Скриншоты (если применимо)

До После
n/a n/a

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en) — не требовались
  • PHPStan проходит без новых ошибок — полный stan в CI
  • ESLint проходит без ошибок — Vue не трогали
  • Обновлён CHANGELOG.md — по политике репо при релизе

Дополнительные заметки

AC #355

Критерий Реализация
В manager.php нет getObject / разбора body для extra-fields smoke ExtraFieldsControllerRoutesTest
Поведение REST без breaking changes те же endpoints, envelope Response, те же коды ошибок
Ответы через Response контроллер возвращает Response::*()->getData()
php -l exit 0 на затронутых файлах

Вне scope

  • Split всего manager.php на файлы
  • Vue ExtraFieldsManager UI
  • Runtime dispatch-тест с stub-сервисом (follow-up, по аналогии с ConfigRoutePermissionsTest)

Refs #341, #345

Move inline route closures to a Manager controller with DI-backed
ExtraFieldsService; routes only dispatch. Adds getField() on the service.
@Ibochkarev Ibochkarev added priority: medium Средний приоритет enhancement New feature or request tech-debt Maintainability / refactor / architecture debt labels Jul 30, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 July 30, 2026 03:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: medium Средний приоритет tech-debt Maintainability / refactor / architecture debt

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant