我正在将现有的 Symfony 2.8
项目迁移到 Symfony 3.4
. 将现有 AppBundle
添加到新生成的 Symfony 3.4
项目后,出现以下错误:
无法自动装配服务“AppBundle \ Controller \ CustomExceptionController”:方法“__construct()”的参数“$ useDebugMode”是类型提示“bool”,你应该对其值进行详细配置
我发现了有关此问题的其他几个问题,但解决方案始终指向 service.yml
文件中缺少的参数 . 但是,据我所知,这不是问题所在:
// CustomExceptionController.php
namespace AppBundle\Controller;
use Symfony\Bundle\TwigBundle\Controller\ExceptionController;
...
class CustomExceptionController extends ExceptionController {
public function __construct(\Twig_Environment $twig, bool $useDebugMode, Translator $translator) {
parent::__construct($twig, $useDebugMode);
...
}
...
}
// services.yml
services:
...
app.exception_controller:
class: AppBundle\Controller\CustomExceptionController
arguments: ['@twig', '%kernel.debug%', "@translator.default" ]
我没有在 app/config/config.yml
中明确设置/定义 %kernel.debug%
,但我认为这不是必需的 . 是吗?
因此, $useDebugMode
参数的值明确设置为 %kernel.debug%
的值 . 那么如何解决这个错误呢?
2 回答
在参数列表中仅指定
$useDebugMode
,其他两个将自动注入/自动装配 .$useDebugMode
必须与构造函数中的相同 .真正 . 在这种情况下,如果您坚持使用服务ID,请将其别名为类名,并查看它是否再次发生 .