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 & Dev-main. See screenshots. Same result.
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 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.
h3. Solution
Avoid autowiring \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController. Instead use, the $GLOBALS['TSFE'].
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 bag or globals. Also wish that there be single points of constructing objects in TYPO3. In chasing down the 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.