'Symfony 4: "Autowire: you should configure its value explicitly."
I'm starting to working with Symfony4 and I meet the following error when I try to run my server: Cannot autowire service "App\Controller\CharacterInformation": argument "$region" of method "__construct()" is type-hinted "string", you should configure its value explicitly.
How I instantiate my class:
/**
* @Route("/")
* @return Response
*/
function mainPage() {
$characterInformation = new CharacterInformation('eu');
return new Response($characterInformation->getCharacter());
}
The constructor of CharacterInformation:
/**
* @var int
*/
public function __construct(string $region) {
$this->apiInformation = new ApiContent($region);
}
The constructor of ApiContent:
public function __construct(string $region) {
$apiToken = new ApiToken($region);
$this->token = $apiToken->getToken();
$this->region = $apiToken->getRegion();
}
Solution 1:[1]
Try to set autowire information into config/services.yaml. Like:
#app.myservice.config:
App\Controller\CharacterInformation:
arguments:
$region: "%region%"
Check all information into Defining Services Dependencies Automatically (Autowiring)
Solution 2:[2]
Also you can resolve this problem by binding parameters in your services.yml
file.
Here is well explained https://stackoverflow.com/a/49084402
# config.yml
parameters:
foo: 'secret'
services:
_defaults:
autowire: true
bind:
$fooKey: '%foo%'
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Dmytro |
Solution 2 | Smarquina |