Skip to content

fix(manager): предупреждение formatRow и сохранение дополнительных категорий товара#240

Open
Ibochkarev wants to merge 1 commit into
modx-pro:betafrom
Ibochkarev:fix/manager-category-options-save-categories
Open

fix(manager): предупреждение formatRow и сохранение дополнительных категорий товара#240
Ibochkarev wants to merge 1 commit into
modx-pro:betafrom
Ibochkarev:fix/manager-category-options-save-categories

Conversation

@Ibochkarev
Copy link
Copy Markdown
Member

Описание

Исправление двух связанных проблем менеджера (карточка категории → опции; карточка товара → дополнительные категории).

  • Список опций категории: у msCategoryOption составной первичный ключ, в PDO-строке нет колонки id; formatRow() больше не читает $row['id'] (fallback на option_id в рамках одной категории, при появлении id в выборке используется он).
  • Доп. категории товара: saveCategories() при отсутствии ключа categories в $_fields (форма не отправила поле, например вкладка «Категории» ещё не монтировала скрытое поле) выходит без изменений, не очищая msCategoryMember — тот же контракт, что у saveLinks().

Добавлена запись в CHANGELOG.md.

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

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

Связанные Issues

Closes #238

Примечание: поведение интеграций, которые сознательно опирались на «в POST нет categories → очистить связи», изменилось: очистка возможна только при явной передаче categories (включая пустой массив).

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

  • Логическое сопоставление с сценарием из issue; php -l для изменённых PHP-файлов.

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

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

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

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

  • MiniShop3: ветка PR
  • MODX: —
  • PHP: синтаксическая проверка локально

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

До После

Чеклист

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

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

Ревью: при необходимости зафиксировать в документации для интеграторов, что отсутствие ключа categories означает «не менять членство», а не «сбросить».

…ние доп. категорий без POST-поля

CategoryOptionsController: для ответа API не обращаться к отсутствующему столбцу id у msCategoryOption.
ProductDataService::saveCategories: при отсутствии ключа categories в POST не очищать msCategoryMember (как saveLinks).

Closes modx-proGH-238
@Ibochkarev Ibochkarev requested a review from biz87 May 8, 2026 04:06
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.

[Bug] Warning formatRow id в CategoryOptionsController и потеря доп. категорий товара при save

1 participant