Project

General

Profile

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. 

Back