我正在将现有的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" ]
我没有在%kernel.debug%
中明确设置/定义app/config/config.yml
,但是我认为这不是必需的。是吗?
因此,$useDebugMode
参数的值被显式设置为%kernel.debug%
的值。那么如何解决错误呢?
答案 0 :(得分:1)
// services.yml
services:
...
app.exception_controller:
class: AppBundle\Controller\CustomExceptionController
arguments:
$useDebugMode: '%kernel.debug%'
在参数列表中仅指定$useDebugMode
,其他两个将自动注入/自动接线。
$useDebugMode
必须与构造函数中的相同。