Symfony 4:“Autowire:你应该显式配置它的值。

2022-08-30 22:20:41

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

我如何实例化我的类:

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

字符信息的构造函数:

 /**
 * @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%"

将所有信息检查到“自动定义服务依赖关系”(自动布线)中


答案 2

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

这里有很好的解释 https://stackoverflow.com/a/49084402

    # config.yml
    parameters:
      foo: 'secret'

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

推荐