首页 文章

迁移到Symfony 3.4后自动装配服务错误 - 如何明确配置值?

提问于
浏览
0

我正在将现有的 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 回答

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

    在参数列表中仅指定 $useDebugMode ,其他两个将自动注入/自动装配 .

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

  • 0

    真正 . 在这种情况下,如果您坚持使用服务ID,请将其别名为类名,并查看它是否再次发生 .

相关问题