fix(events): учитывать мутации из $response["data"] после invokeEvent#252
Open
Ibochkarev wants to merge 1 commit into
Open
fix(events): учитывать мутации из $response["data"] после invokeEvent#252Ibochkarev wants to merge 1 commit into
Ibochkarev wants to merge 1 commit into
Conversation
f0b082d to
ccb91b5
Compare
…ion (modx-pro#221) Read mutated params from invokeEvent response; stricter OrderStatus handling; document Customer validate errors from plugins.
ccb91b5 to
4fff0f1
Compare
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.