Bug #105191
openTypoScript condition with missing traverse breaks log module
0%
Description
After updating my TYPO3 installation from TYPO3 v 11.5 to 12.4 I get the following error in trying to open the log backend module:
(1/1) RuntimeException Unable to get property "type" of non-object "getTSFE()". in /var/www/html/vendor/symfony/expression-language/Node/GetAttrNode.php line 86
Related to:
https://forge.typo3.org/issues/100047
This was due to having a TypoScript condition without a traverse:
Before:
[getTSFE().type == 1618224993] plugin.tx_dpnglossary { view.templateRootPaths.10 = EXT:wco_sitepackage_forschung/Resources/Private/Extensions/DpnGlossary/Templates/Ajax } [global]
Fixing the condition resolves the problem:
[traverse(getTSFE(), 'type') == 1618224993] plugin.tx_dpnglossary { view.templateRootPaths.10 = EXT:wco_sitepackage_forschung/Resources/Private/Extensions/DpnGlossary/Templates/Ajax } [global]
However I think it would be good to add better error handling for conditions and to break with a more meaningful error message and a custom error code where we can add documentation about this error.
Updated by Lina Wolf 27 days ago
- Related to Task #100047: Modernize condition matching / expression handling added
Updated by Lina Wolf 27 days ago
- Related to Bug #100345: Unable to get property "type" of non-object "getTSFE()" added
Updated by Nikita Hovratov 20 days ago
I think this is not so easy, as this is just a "RuntimeException". So we can't just catch it.
As a side note, I would suggest using this https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Conditions/Index.html#page condition instead, as TSFE is already deprecated in v13. The condition will most probably vanish as well.