В приложении Symfony 4 как передать переменную среды в класс обслуживания? - PullRequest
0 голосов
/ 07 марта 2019

Я создаю приложение, используя Symfony 4 и Docker. В моем файле .env у меня есть следующая строка:

DEVICE_CREATION_SECRET=123456

... и в моем файле services.yaml у меня есть следующее определение:

VMS\Application\DigitalRetail\Handler\DeviceForwardHandler:
    arguments:
        - env(DEVICE_CREATION_SECRET)

... который я собираюсь передать моему секрету (123456) моему классу, так как у меня есть в этом классе:

public function __construct(string $deviceCreationSecret)
{
    $this->deviceCreationSecret = $deviceCreationSecret;
}

Но когда я запускаю свое приложение и выкидываю значение, я получаю env(DEVICE_CREATION_SECRET) вместо своего секрета (123456). Что мне нужно, чтобы получить доступ к этому секрету?

Ответы [ 2 ]

5 голосов
/ 07 марта 2019

Я думаю, что этот способ должен работать:

VMS\Application\DigitalRetail\Handler\DeviceForwardHandler:
    arguments:
        - '%env(DEVICE_CREATION_SECRET)%'

https://symfony.com/doc/current/configuration/external_parameters.html

0 голосов
/ 07 марта 2019

Перейдите к services.yml:

parameters:
    DEVICE_CREATION_SECRET: '%env(DEVICE_CREATION_SECRET)%'

После этого в классе введите параметрBagInterface:

use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;

private $deviceCreationSecret;
private $params;

public function __construct(
    string $deviceCreationSecret,
    ParameterBagInterface $params
)
{
    $this->deviceCreationSecret = $deviceCreationSecret;
    $this->params = $params;
}

А затем для параметра get:

$this->params->get('DEVICE_CREATION_SECRET');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...