0

symfony2でdoctrine2dbal接続で現在使用されているパスワードを取得したいと思います。

を使用する$kernel->getContainer()->getParameter('database_password')と、parameters.ymlで定義されているパスワードを見つけることができますが、一部の環境(config_test.ymlなど)で異なるパスワードを定義すると、parameters.ymlのデータは役に立ちません。

今、私が見$kernel->getContainer()->getParameterBag()->all()ても、それを見つけることができません。

そして、あなたがなぜ疑問に思う場合に備えて?関数でロックメカニズムを使用register_shutdown_function()しています。致命的なエラーが発生した場合に備えて、php組み込みのmysqlまたはpdo関数を使用して、その時点でフレームワークのほとんどがダウンしているため、そのロックを削除しようとしています。

4

2 に答える 2

1

取得できない場合は、DB接続もありません。

テスト環境からのパラメーターは、dev、prod、...環境にロードされません!オーバーライドする場合は、parameters.ymlですべての接続パラメーターを定義します

//parameters.yml
database_prod_name: prod
database_prod_user: prod_user
database_prod_password: prod_password

database_dev_name: dev
database_dev_user: dev_user
.....

//config_prod.yml
doctrine:
    dbal:
        dbname:   "%database_prod_name%"
        user:     "%database_prod_user%"
        password: "%database_prod_password%"
....

使用している他のすべての環境についても同じことが言えます。

于 2013-01-17T10:30:23.443 に答える
1

カーネルオブジェクトを介してコンテナと接続にアクセスする必要がある場合は、以下のコードを使用してください。

$connection = $kernel->getContainer()->get('doctrine')->getConnection();

コンテナパラメータを取得して設定する必要がある場合は、以下のコードを使用できます。

$container->setParameter('database_name', 'xyz');
$db_password = $container->getParameter("database_password");
于 2016-04-28T13:58:12.550 に答える