Skip to content

fix(product): persist clearing color/size/tags on save (#324)#325

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/324-clear-color-size-tags
Open

fix(product): persist clearing color/size/tags on save (#324)#325
Ibochkarev wants to merge 1 commit into
betafrom
fix/324-clear-color-size-tags

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Исправлена очистка стандартных JSON-полей товара (color, size, tags) на вкладке «Данные товара» в менеджере.

При удалении всех chips Vue-компонент ms3-combo-options не отправлял hidden inputs в legacy POST формы MODX. ProductDataPayloadTrait трактовал отсутствие ключа как «поле не меняли», и старое значение оставалось в msProductData.

Изменения:

  • DynamicField.vue: sentinel hidden input field[]= при пустом массиве (по аналогии с repeater, feat(extra-fields): repeater field type (ms3-repeater) #301).
  • ProductDataService::saveOptions(): синхронизация явно очищенных JSON-полей в msProductOption через reflection на _fields.
  • msProductData::prepareOptionValues(): нормализация пустого массива [] в null.

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

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

Связанные Issues

Closes #324

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

  • Ручное тестирование (сценарий из issue: заполнить → сохранить → очистить → сохранить → reload)
  • Автоматические тесты (PHPStan, ESLint)
  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: 1.12.0-beta1
  • MODX: —
  • PHP: php -l на изменённых файлах; npm run lint для DynamicField.vue

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

До После

Чеклист

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

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

После merge потребуется npm run build в vueManager/ для обновления артефактов в assets/components/minishop3/js/mgr/vue-dist/.

Vue ms3-combo-options omitted empty arrays from the legacy MODX form POST,
so ProductDataPayloadTrait never updated cleared fields. Also sync explicitly
cleared JSON fields to msProductOption and normalize empty arrays in prepareOptionValues.
@Ibochkarev Ibochkarev marked this pull request as ready for review June 26, 2026 13:44
@Ibochkarev Ibochkarev requested a review from biz87 June 26, 2026 13:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant