我需要以加密形式在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
中的值,这是错误的并且没有与数据库的连接是制作。任何想法如何解决它?谢谢。
答案 0 :(得分:0)
问题解决了
到app / config文件夹添加新文件parameters.php
在此文件中,您可以访问服务容器,添加以下行:
$container->setParameter('your_param', 'your_value');
文件config.yml
中的将以下行添加到imports
部分:
- { resource: parameters.php }
之后,在任何初始化之前设置参数