Symfony 4:“Autowire:你应该明确地配置它的值。”

Posted

技术标签:

【中文标题】Symfony 4:“Autowire:你应该明确地配置它的值。”【英文标题】:Symfony 4: "Autowire: you should configure its value explicitly." 【发布时间】:2019-04-05 12:47:46 【问题描述】:

我开始使用 Symfony4,当我尝试运行我的服务器时遇到以下错误:无法自动连接服务“App\Controller\CharacterInformation”:方法“__construct() 的参数“$region” " 是类型提示的“字符串”,你应该明确地配置它的值。

我如何实例化我的类:

 /**
 * @Route("/")
 * @return Response
 */
function mainPage() 
    $characterInformation = new CharacterInformation('eu');
    return new Response($characterInformation->getCharacter());

CharacterInformation的构造函数:

 /**
 * @var int
 */
public function __construct(string $region) 
        $this->apiInformation = new ApiContent($region);

ApiContent 的构造函数:

    public function __construct(string $region) 
    $apiToken = new ApiToken($region);
    $this->token = $apiToken->getToken();
    $this->region = $apiToken->getRegion();

感谢您的帮助

【问题讨论】:

【参考方案1】:

尝试将自动装配信息设置到 config/services.yaml。喜欢:

#app.myservice.config:
    App\Controller\CharacterInformation:
        arguments:
            $region: "%region%"

检查所有信息到Defining Services Dependencies Automatically (Autowiring)

【讨论】:

我就是这么做的,没有任何改变。我什至试图把它放在 _defaults.bind 部分 嘿@afilina,你看到下面的Karringan回答了吗? 是的。那没有帮助。最后,我发现我的定义服务的 yaml 文件没有被加载,因此字符串 args 没有启动。【参考方案2】:

您也可以通过在services.yml 文件中绑定参数来解决此问题。

这里解释得很好https://***.com/a/49084402

    # config.yml
    parameters:
      foo: 'secret'

    services:
      _defaults:
         autowire: true
         bind:
           $fooKey: '%foo%'

【讨论】:

以上是关于Symfony 4:“Autowire:你应该明确地配置它的值。”的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 4 捆绑包工作

从 Symfony 3.4 迁移到 Symfony 4.4 后,自定义投票器无法按预期工作

Symfony 4.4 - Swift Mailer 安装失败

Symfony 4.4 / NelmioApiDocBundle 4.0.1 注释问题

如何使用 symfony 4 创建登录验证表单

为啥要安装 symfony 版本 4? [复制]