Symfony хранит зашифрованный пароль БД в settings.yml - PullRequest
0 голосов
/ 29 мая 2018

на основе ЭТОГО вопроса

Мне нужно хранить пароль БД в parameters.yml в зашифрованном виде.Я нашел похожий вопрос и попытался пропустить свой собственный компилятор и зарегистрировал его. Код выглядит следующим образом:

<?php

namespace AppBundle\DependencyInjection\Compiler;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class ParametersCompilerPass implements CompilerPassInterface
{
  public function process(ContainerBuilder $container)
    {
      $container->setParameter('database_password', 'my_pass');//setting the updated value for DB password 
      var_dump($container->getParameter('database_password'));//here updated password is produced
    }
}

Регистрация пропуска в AppBundle:

 public function build(ContainerBuilder $container)
{
    parent::build($container);
    $container->addCompilerPass(new ParametersCompilerPass(), PassConfig::TYPE_AFTER_REMOVING);
}

выполняется код, и в моей функции отладки var_dump я вижу обновленный проход для моей БД, но для фактического соединения используется значение, хранящееся в parameters.yml, что неверно, и соединение с БД не устанавливается.Есть идеи как это исправить?Спасибо.

1 Ответ

0 голосов
/ 29 мая 2018

проблема решена

в папку app / config добавить новый файл parameters.php

в этом файле у вас есть доступ к сервисному контейнеру, добавьте следующую строку:

$container->setParameter('your_param', 'your_value');

в файле config.yml добавить следующую строку в раздел imports:

- { resource: parameters.php }

после этого параметры будут установлены перед любой инициализацией

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...