[WebProfilerBundle] Wrapping exception js in Sfjs check and also loading base_js Sfjs if needed #41346
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.
This bug was introduced in #41168.
Best viewed with: https://github.com/symfony/symfony/pull/41346/files?w=1 - we could also remove the new indentation in
exception.js
.In that PR, we innocently don't reload
Sfjs
if it doesn't exist. However, on an error page, that template ALSO adds anSfjs
, and thatSfjs
is smaller - containing only a subset of theSfjs
functions. This is tricky, but this PR fixes it.Here are the various situations:
I hit an exception page. The
Sfjs
fromexception.js
is loaded first. This adds the smallerSfjs
. Then thebase_js.html.twig
version is hit. BecauseSfjs
is missing theloadToolbar()
method, that code DOES run again to reinitialize it.I am on a normal page, then travel to an exception page with Turbo. In this case, the original
Sfjs
frombase_js.html.twig
was processed. Then, on the exception page, theSfjs
fromexception.js
is ignored, as is the 2nd execution ofbase_js.html.twig
.Overall, the JS could use some work for supporting things like Turbo (e.g.
DOMContentLoaded
doesn't work with Turbo, so the exception page JS is broken). But I wanted to focus on fixing the bug in this PR.As a reminder, #41168 (avoiding overriding
Sfjs
) was done to help with the AJAX toolbar and Turbo - it's explained in point (1) on #41168.Cheers!