Skip to content

feat(web-api): implement public product catalog endpoints#333

Open
Ibochkarev wants to merge 1 commit into
betafrom
feat/web-api-product-catalog
Open

feat(web-api): implement public product catalog endpoints#333
Ibochkarev wants to merge 1 commit into
betafrom
feat/web-api-product-catalog

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Jul 15, 2026

Copy link
Copy Markdown
Member

Описание

Реализованы публичные endpoints каталога Web API (product/get, product/list), которые раньше были заглушками в web.php.

Headless/SPA-клиенты уже работают с корзиной и заказом через api.php, но не могли получить карточку и список товаров тем же каналом. Логика — в ProductCatalogService, HTTP — тонкий ProductController. Без обязательного токена. Видимость: published=1, deleted=0, hidemenu=0, контекст переданный или текущий. После msOnGetProductFields ответ снова прогоняется через allowlist.

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

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

Связанные Issues

Closes #332

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

  • Unit-тест helpers: php core/components/minishop3/tests/ProductCatalogServiceTest.php

  • php -l по новым/изменённым PHP-файлам

  • Ручное тестирование

  • Автоматические тесты (PHPStan, ESLint)

  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: ветка feat/web-api-product-catalog
  • MODX: —
  • PHP: 8.2+ (локальный php -l / unit-тест без MODX)

Автотест здесь — standalone PHP-скрипт проекта (не PHPStan/ESLint). PHPStan по этому PR не гонялся.

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

До После
stub not implemented yet JSON каталога через api.php

Чеклист

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

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

  • Фильтр parent/category — только primary parent, без msCategoryMember (зафиксировано в readme.md).
  • Страницу REST API на docs.modx.pro нужно синхронизировать отдельно.
  • CHANGELOG.md по политике репозитория не трогали (запись при релизе).
  • Manager-сервисы (CategoryProductsListService, ProductDataService::getProductData) не переиспользовали: они заточены под админку.

@Ibochkarev Ibochkarev marked this pull request as ready for review July 15, 2026 18:13
@Ibochkarev Ibochkarev requested a review from biz87 July 15, 2026 18:13
@Ibochkarev Ibochkarev added priority: medium Средний приоритет enhancement New feature or request and removed priority: medium Средний приоритет labels Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Web API: реализовать каталог товаров (product/get, product/list)

1 participant