Skip to content

fix(product): автоматический class_key msProduct в Product\Create (#305)#306

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/305-product-create-class-key
Open

fix(product): автоматический class_key msProduct в Product\Create (#305)#306
Ibochkarev wants to merge 1 commit into
betafrom
fix/305-product-create-class-key

Conversation

@Ibochkarev
Copy link
Copy Markdown
Member

Описание

При создании товара через процессор MiniShop3\Processors\Product\Create, если в запросе не передан class_key (или пришёл дефолт MODX modDocument), ресурс создавался как обычный документ вместо msProduct.

В initialize() перед вызовом родительского Resource\Create подставляется $this->classKey, когда class_key отсутствует, пустой или равен modDocument. Явно переданный class_key (например, из Vue-менеджера) не перезаписывается.

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

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

Связанные Issues

Closes #305

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

  • Ручное тестирование (рекомендуется: создать товар из менеджера без class_key в query — ресурс должен быть MiniShop3\Model\msProduct)
  • Автоматические тесты (PHPStan, ESLint) — php -l для изменённого файла
  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: текущая ветка
  • MODX: 3.x
  • PHP: 8.2+

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

До После
Создание без class_keymodDocument Создание без class_keymsProduct

Чеклист

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

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

Корневая причина: MODX\Revolution\Processors\Resource\Create::initialize() читает class_key из свойств запроса с дефолтом modDocument, игнорируя $classKey процессора. Свойство public $classKey = msProduct::class в Product\Create само по себе не срабатывало.

…305)

MODX Resource\Create defaults missing class_key to modDocument; ensure the
product create processor applies $this->classKey before parent initialize.
@Ibochkarev Ibochkarev requested a review from biz87 May 28, 2026 13:40
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.

[Feature] Процессор Product\\Create должен автоматом устанавливать класс MiniShop3\Model\msProduct

1 participant