Skip to content

fix(product): persist clearing color/size/tags on save#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#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
@Ibochkarev Ibochkarev changed the title fix(product): persist clearing color/size/tags on save (#324) fix(product): persist clearing color/size/tags on save Jul 16, 2026
@Ibochkarev Ibochkarev added the bug Something isn't working label Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

1 participant