fix(events): учитывать мутации из $response["data"] после invokeEvent (#221)#252
Open
Ibochkarev wants to merge 2 commits into
Open
fix(events): учитывать мутации из $response["data"] после invokeEvent (#221)#252Ibochkarev wants to merge 2 commits into
Ibochkarev wants to merge 2 commits into
Conversation
Five call sites now consume merged plugin output from Utils::invokeEvent (Cart options, Customer errors/msCustomer, order status id, orderData). Refs modx-pro#221
- msOnErrorValidateCustomerValue: honor data.errors via array_key_exists (incl. empty array); document contract in Customer::validate() - msOnBeforeChangeOrderStatus: only apply mutated status when is_numeric Updates CHANGELOG.md (May 2026).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Описание
Исправлена потеря мутаций плагинов после
MiniShop3\Utils\Utils::invokeEvent(): в пяти местах вызывающий код теперь читает актуальные значения из$response['data'](они уже включаютreturnedValuesиз MODX-события).Затронутые точки по аудиту issue #221:
Cart::changeOption—optionsпослеmsOnBeforeChangeOptionsInCartCustomer::validate—success, затем необязательный массивerrorsпослеmsOnErrorValidateCustomerValueCustomer::getOrCreate— опциональныйmsCustomerиз событияmsOnBeforeGetOrderCustomerвместо безусловной перезаписи результатомgetObject()OrderStatusService::change— перенаправление на другойstatus_id, если плагин вернул другой статус вmsOnBeforeChangeOrderStatus; повторная загрузка модели статуса только при изменении idOrderUserResolver::getUserId— нормализованныйorderDataперед дальнейшим lookup пользователяЭто дополняет исправление по #219 (merge в
invokeEvent): здесь ошибка была только в том, что готовые ключи вdataне использовались.Тип изменений
Примечание по совместимости: для
msOnErrorValidateCustomerValueраньше ответ события полностью игнорировался; теперь приsuccess === falseвозвращается[$key => $response['message']], а при наличии непустого массиваerrorsвdata— он отдаётся вызывающему коду. Плагины с «шумным» непустым сообщением при ошибке смогут повлиять на UX — это ожидаемое включение расширяемости из #221.Связанные Issues
Closes #221
См. также: #219, контекст продакшна в #218.
Как это было протестировано?
php -l) для изменённых файловКонфигурация тестирования:
fix/gh-221-invoke-event-data-consumerphp -lна четырёх изменённых файлахСкриншоты (если применимо)
Чеклист
msOnErrorValidateCustomerValue, см. выше)Дополнительные заметки
Ревью можно сфокусировать на семантике
msOnErrorValidateCustomerValueи на том, нужна ли дополнительная валидация типа дляdata['status']при экзотическихreturnedValues.