我正在使用 TYPO3 10.2 并尝试将我创建的一些服务类注入到我的身份验证服务中。class AuthService extends \TYPO3\CMS\Core\Authentication\AuthenticationServiceAuthService 中的构造函数: /** * Contains the configuration of the current extension * @var ConfigurationService */ protected $configurationService; /** * @var RestClientService */ protected $restClientService; /** * @var ConnectionPool */ protected $connectionPool; /** * * @param ConfigurationService $configurationService * @param RestClientService $restClientService * @param ConnectionPool $connectionPool */ public function __construct(ConfigurationService $configurationService, RestClientService $restClientService, ConnectionPool $connectionPool) { $this->configurationService = $configurationService; $this->restClientService = $restClientService; $this->connectionPool = $connectionPool; }我收到以下错误:函数 Vendor\MyExt\Service\AuthService::__construct() 的参数太少,第 3461 行的 C:\xampp\htdocs\myproject\typo3\sysext\core\Classes\Utility\GeneralUtility.php 中传递了 0,而预期为 3有什么建议吗?我在 ControllerClass 中使用了相同的构造函数,并且在那里一切正常。到目前为止感谢!
1 回答
波斯汪
TA贡献1811条经验 获得超4个赞
看起来您AuthenticationService的内部实例化为GeneralUtility::makeInstance(). 对于您在某些时候注册的许多类都是如此,然后 TYPO3 负责创建类(想想用户函数、插件控制器、模块控制器、身份验证服务、挂钩等)。
GeneralUtility::makeInstance()需要将类从 DI 容器中取出以使 DI 工作,但这仅适用于public在容器编译期间创建的类。
出于这个原因,您的问题的解决方案应该是AuthService在您的Configuration/Services.yaml:
services:
_defaults:
autowire: true
autoconfigure: true
public: false
Vendor\MyExt\:
resource: '../Classes/*'
Vendor\MyExt\Service\AuthService:
public: true
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消