fluid resolving an unexpected layout file
We run into an Exception during rendering an Extension:
Uncaught TYPO3 Exception
Section "main" does not exist.
Actually something is going wrong during resolving the proper layout file.
page.10 = FLUIDTEMPLATE
does use a layout "Default", with a section "content" (but no section "main")
layoutRootPaths is set properly in TS.
This is working just fine on almost all pages.
plugin.tx_xxx does use a layout "Default" as well, however here we use a section "main" (but no section "content").
layoutRootPaths,and alike are set properly in TS.
However during rendering this extension for some weird(and yet unknown) reason the layout file from the page is used (which obviously is missing the section "main".
During debugging I found AbstractTemplateView of typo3fluid ll 190 through 200 responsible. $paths->getLayoutSource($layoutName) does return the proper source at first but however at some later point a wrong file will be served from cache.
The most weird thing, we use Layout Default for other extensions as well where we don't have this problem.
Templates and Layouts are all stored in a site-package (EXT:xxx-site)
[BUGFIX] Fix recursive FLUIDTEMPLATE cObj's that use layoutRootPaths
FLUIDTEMPLATE variables may contain content elements (e.g. recursive
FLUIDTEMPLATE's) which may instantiate own TemplateViews
A recursive StandaloneView will statically(!!) cache used TemplatesPaths
If StandaloneView is instantiated before, but the fluid layout path is
calculated after inner content objects are being rendering,
the altered statically cached `resolvedFiles` cache is used
and contains invalid layoutRootPaths.
Short term solution:
Defer the initialization of the StandaloneView (which flushes those
buggy caches) until all variables have been processed.
Releases: master, 8.7
Tested-by: TYPO3com <firstname.lastname@example.org>
Reviewed-by: Sebastian Hofer <email@example.com>
Tested-by: Sebastian Hofer <firstname.lastname@example.org>
Reviewed-by: Susanne Moog <email@example.com>
Tested-by: Susanne Moog <firstname.lastname@example.org>