Load the API kernel service prior to dispatching the civi.api4.createRequest
event when creating an API4 request
#21839
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.
Overview
Follow-up to #21771 for registering
EventSubscriberInterface
implementations prior to dispatching thecivi.api4.createRequest
event.Before
When issueing an API4 request without having loaded the API kernel service (e.g. invoking the API4 via an Ajax request using
CRM.api4()
), thecivi.api4.createRequest
event will not be dispatched with all event subscribers, because the ones registering through anEventSubscriberInterface
implementation are only being called when executing the request, as the API kernel service is not being loaded until then.After
The event is being dispatched with all event subscribers.
Technical Details
This problem only occurs when no other API call has been issued before the API4 call, but API4 explorer fails for entities relying on their
EventSubscriberInterface
implementation when issueing API4 requests via Ajax.Comments
This should go into
5.43
along with the original implementation of thecivi.api4.createRequest
event.