迁移到Symfony 3.4后自动接线服务错误-如何显式配置值?

时间:2018-12-10 10:39:22

标签: symfony

我正在将现有的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%的值。那么如何解决错误呢?

1 个答案:

答案 0 :(得分:1)

// services.yml
services:
    ...
    app.exception_controller:
        class: AppBundle\Controller\CustomExceptionController
        arguments:
           $useDebugMode: '%kernel.debug%'

在参数列表中仅指定$useDebugMode,其他两个将自动注入/自动接线。

$useDebugMode必须与构造函数中的相同。