Skip to content

feat(extra-fields): add ms3-key-value field type#323

Open
Ibochkarev wants to merge 1 commit into
modx-pro:betafrom
Ibochkarev:feat/300-key-value-extra-field
Open

feat(extra-fields): add ms3-key-value field type#323
Ibochkarev wants to merge 1 commit into
modx-pro:betafrom
Ibochkarev:feat/300-key-value-extra-field

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Добавляет тип extra field ms3-key-value для хранения пар ключ–значение с JSON-схемой в колонке key_value_config.

Поддерживаются два режима:

  • fixed — заранее заданные ключи (label, тип значения string/number, required);
  • free — произвольные пары ключ/значение в UI.

Backend: KeyValueFieldService (валидация, нормализация, сериализация), миграция Phinx, регистрация в ServiceRegistry, интеграция в ExtraFieldsService, ProductDataService и валидацию extra fields в OrdersController.

Frontend (Vue Manager): KeyValueField, KeyValueSchemaEditor, утилиты keyValueField.js, подключение в DynamicField, ExtraFieldsManager и OrderExtraFieldsSection.

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

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

Связанные Issues

Closes #300

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

  • Ручное тестирование
  • Автоматические тесты (PHPStan, ESLint)
  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: ветка feat/300-key-value-extra-field от beta
  • MODX: не запускался
  • PHP: локальный CLI

Проверки:

  • php -l на KeyValueFieldService.php, миграции, ExtraFieldsService.php, ProductDataService.php, OrdersController.php
  • npx eslint на KeyValueField.vue, KeyValueSchemaEditor.vue, keyValueField.js, DynamicField.vue, ExtraFieldsManager.vue, OrderExtraFieldsSection.vue

PHPStan и полный прогон MODX не выполнялись.

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

Не приложены: изменения затрагивают формы менеджера и конфигурацию extra fields; визуальная проверка выполнялась локально.

Чеклист

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

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

Реализация следует паттерну ms3-repeater (#301): отдельный сервис, колонка конфига в ms3_extra_fields, Vue-компоненты для редактирования схемы и значений. CHANGELOG не обновлялся — по политике репозитория записи добавляются при подготовке релиза.

Introduce configurable key-value extra fields with fixed and free modes,
backend validation via KeyValueFieldService, and Vue editor components
for manager forms and extra field definitions.

Closes modx-pro#300
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] Тип поля key=value (ms3-key-value) для extra fields

1 participant