Skip to content

fix(snippets): msProducts — menuindex при sortby массивом - #743

Merged
biz87 merged 1 commit into
betafrom
fix/issue-740-sortby-array
Sep 16, 2026
Merged

biz87 merged 1 commit into
betafrom
fix/issue-740-sortby-array

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Fenom и PHP могут передать в msProducts sortby массивом (['menuindex' => 'ASC']). Сниппет делал (string), получал "Array", и подстановка effective menuindex (#625 / #737) не срабатывала: каталог молча сортировался по родному menuindex товара.

Массив нормализуется в JSON (pdoTools это умеет), JOIN msCategoryMember и CASE включаются так же, как для строки/JSON.

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

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

Связанные Issues

Closes #740

Связано: #625 / #627, #736 / #737.

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

php -l core/components/minishop3/src/Services/Category/CategoryProductMenuindexService.php
php -l core/components/minishop3/elements/snippets/ms3_products.php
# exit 0

php core/components/minishop3/tests/CategoryProductMenuindexServiceTest.php
# OK

Smoke: ['menuindex' => 'ASC'] ≡ JSON {"menuindex":"ASC"}; ['menuindex' => 'DESC', 'pagetitle' => 'ASC'] подставляет только ключ menuindex.

  • Ручное тестирование
  • Автоматические тесты (composer ci:php / composer test, npm run lint:ci, composer stan / GitHub Actions CI)
  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: ветка fix/issue-740-sortby-array
  • MODX: —
  • PHP: 8.4

Чеклист

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

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

Array без menuindex по-прежнему может сломать блок sortbyOptions (TypeError на preg_match) — так было и до фикса. С menuindex в массиве теперь уходит JSON-строка.

Fenom/PHP array sortby was cast to the string "Array", so effective
per-category menuindex never ran. Normalize arrays to JSON first.
@Ibochkarev Ibochkarev added priority: medium Средний приоритет bug Something isn't working labels Sep 16, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 September 16, 2026 06:44
@biz87
biz87 merged commit dad21f6 into beta Sep 16, 2026
6 checks passed
@Ibochkarev
Ibochkarev deleted the fix/issue-740-sortby-array branch September 23, 2026 02:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: medium Средний приоритет

Projects

None yet

Development

Successfully merging this pull request may close these issues.

msProducts: sortby массивом не доходит до подстановки menuindex

2 participants