Skip to content

Убрать Undefined array key desc из лога установки resolver_08 - #787

Open
Ibochkarev wants to merge 2 commits into
betafrom
fix/issue-782-snippet-properties-desc
Open

Ibochkarev wants to merge 2 commits into
betafrom
fix/issue-782-snippet-properties-desc

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

При upgrade resolver_08_snippet_properties читал свойства через $snippet->get('properties'). modElement::get без isset обращается к $property['desc'] и пишет PHP warning — как раз на тех legacy-строках, которые резолвер должен лечить. Теперь свойства читаются через Closure::bind + parent::get (unserialize phptype=array без lexicon-ветки). Backfill ms3_prop_* не менялся.

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

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

Связанные Issues

Closes #782

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

php -l _build/resolvers/resolver_08_snippet_properties.php
# exit 0

Полный composer ci:php / vue lint не гонялись: затронут один install-resolver, runtime PHP приложения не менялся.

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

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

  • MiniShop3: ветка fix/issue-782-snippet-properties-desc
  • MODX: n/a (resolver unit path)
  • PHP: локальный php -l

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

До После

Чеклист

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

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

getProperties() использовать нельзя: он сам вызывает get('properties'). Сырой toArray('', true) + fromJSON тоже не подходит: у modSnippet.properties phptype=array (serialize), не JSON.

Ручная проверка: upgrade поверх сниппетов без desc в modx_site_snippets.properties — в логе установки нет Undefined array key "desc" между resolver_07 и resolver_09, desc проставляются.

@Ibochkarev
Ibochkarev requested a review from biz87 September 24, 2026 17:56
Read snippet properties via xPDO parent::get so upgrade can backfill
missing desc without tripping modElement lexicon translation.
Clarify that package reinstalls trigger the desc warning each time,
matching the reproduction note on #782.
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.

[Install] Undefined array key "desc" в логе установки из resolver_08_snippet_properties

1 participant