Project

General

Profile

Actions

Bug #105135

open

TypoScript object path "tt_content..20" does not exist

Added by Lina Wolf 4 months ago. Updated about 2 months ago.

Status:
Accepted
Priority:
Should have
Assignee:
-
Category:
TypoScript
Target version:
-
Start date:
2024-09-27
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
12
PHP Version:
8.2
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Trying to display an EXTBASE plugin with additional information in a fluid template I did the following:

<f:cObject typoscriptObjectPath="tt_content.myextension_showpersoninsearch" data="{person: document.fields.uid}" />

I get the very hard to debug error message

(1/1) #1253191023 TYPO3Fluid\Fluid\Core\ViewHelper\Exception
TypoScript object path "tt_content..20" does not exist

It seems like the CObjectViewHelper is recursively calling itself with a missing path.

Actions #1

Updated by Garvin Hicking 4 months ago

  • Status changed from New to Needs Feedback

The error message is really "tt_content..20" with two dots? Or was that some shortening error when posting?

Actions #2

Updated by Lina Wolf 4 months ago · Edited

  • Status changed from Needs Feedback to New

Yes, that is the exact error message. On the first call CObjectViewHelper::renderStatic gets called with the correct typoscriptObjectPath in its string.

It then calls renderContentObject where the typoscriptObjectPath is still correct. line 184 then seeems to recuresively call CObjectViewHelper::renderStatic with the missing path

Solution should be mentioned here; https://docs.typo3.org/m/typo3/reference-exceptions/main/en-us/Exceptions/1253191023.html#typoscript-object-path-tt-content-20-does-not-exist

Actions #3

Updated by Markus Klein 3 months ago

  • Status changed from New to Needs Feedback

it seems like your `tt_content.myextension_showpersoninsearch` extension is rendering some Fluid, which again contains an f:cObject viewhelper.
Please check that first. This smells like nesting.

Actions #4

Updated by Lina Wolf 2 months ago

  • Status changed from Needs Feedback to Closed

Cannot reproduce

Actions #5

Updated by Stefan Terborg 2 months ago

I have the same problem with plugins from news or indexed_search:

# typoscript:
lib.searchBox < tt_content.indexedsearch_pi2

# fluid template:
<f:cObject typoscriptObjectPath="lib.searchBox"/>
Actions #6

Updated by Stefan Terborg 2 months ago

This seems to work:

# typoscript:
lib.searchBox < tt_content.indexedsearch_pi2.20

# fluid template:
<f:cObject typoscriptObjectPath="lib.searchBox"/>
Actions #7

Updated by Markus Klein 2 months ago

  • Category changed from Fluid to TypoScript
  • Status changed from Closed to Needs Feedback

So it was working before and now broke with v12?

Actions #8

Updated by Simon Schaufelberger about 2 months ago · Edited

I can also confirm that it is broken with TYPO3 12. The problem is that The core actually renders all plugins like so: https://github.com/TYPO3/typo3/blob/main/typo3/sysext/fluid_styled_content/Resources/Private/Templates/Generic.html#L8 with an appended .20 which refers to the EXTBASEPLUGIN or USER function, depending on the type while plugin.tx_news_pi1 was previously also accessed through tt_content.list.20.tx_news_pi1, it is now in the same places as tt_content.tx_news_pi1.20 and NOT tt_content.tx_news_pi1 because tt_content.tx_news_pi1 is now a FLUIDTEMPLATE and rendering that is broken.

See also slack channel:

https://typo3.slack.com/archives/C03AM9R17/p1732634108884449
https://typo3.slack.com/archives/C03AM9R17/p1732634623250659
https://typo3.slack.com/archives/C03AM9R17/p1732635747997139
https://typo3.slack.com/archives/C03AM9R17/p1732636158214989

PS: the migration documentation is also wrong therefore: https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/ContentElements/MigrationListType.html#plugins-list-type-migration-core-plugin-typoscript because the migration is not 1:1 the same as before. The correct migration would actually be:

-tt_content.list.20.examples_pi1 = USER
-tt_content.list.20.examples_pi1 {
+tt_content.examples_pi1 =< lib.contentElement
+tt_content.examples_pi1 {
+    20 = USER
+    20 {
         userFunc = MyVendor\Examples\Controller\ExampleController->example
         settings {
             singlePid = 42
             listPid = 55
         }
         view {
             templateRootPath = {$templateRootPath}
             partialRootPath = {$partialRootPath}
             layoutRootPath = {$layoutRootPath}
         }
     }
+    templateName = Generic
 }

 # Or if you used the plugin top level object:

-tt_content.list.20.examples_pi1 < plugin.tx_examples_pi1
+tt_content.examples_pi1.20 < plugin.tx_examples_pi1.20

This would be the same as the TypoScript Tree would render all other content elements

Actions #9

Updated by Markus Klein about 2 months ago

  • Status changed from Needs Feedback to Accepted
Actions

Also available in: Atom PDF