Bug #102092
Updated by John Miller 11 months ago
Just updated to the latest TYPO3 CMS dev-main. Container builder throws <pre><code class="php"> (1/1) Symfony\Component\DependencyInjection\Exception\RuntimeException Cannot autowire service "TYPO3\CMS\Core\Routing\PageArguments": argument "$pageId" of method "__construct()" is type-hinted "int", you should configure its value explicitly. </code></pre> Am not autowiring it in my extension and have no third-party extensions. Tried both @12.4-dev@ 12.4-dev & @dev-main@ . Dev-main. See screenshots. Same result. *Problem* h3. Problem Autowiring \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController doesn't work. I had autowired this class in a constructor and a property in two different files. The file requires the @PageArguments@ PageArguments class in its constructor, which in turn, is autowired but has scalar values for its constructor. Same goes for the two more parameters in the @TypoScriptFrontendController@ . TypoScriptFrontendController. *Solution* h3. Solution Avoid autowiring @\TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController@ . \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController. Instead use, the @$GLOBALS['TSFE']@ . $GLOBALS['TSFE']. *Sentiments* h3. Sentiments I wish there was a way to easily get ready-made services straight from di container instead of using complex methods such as the @Aspects@ Aspects bag or @globals@. globals. Also wish that there be single points of constructing objects in TYPO3. In chasing down the @PageArguments@ PageArguments problem, I realized that it is constructed from multiple places. It's insane, especially for debugging and efficiency reasons. But that's just me.