2016-04-23 9 views
4

私はSymfony 2.8プロジェクトを持っているすべてのサーバを指す100の第3レベルのドメインを持っています。 Symfonyは、第3レベルのドメインに応じて、異なるデータベースに接続できるようにする必要があります。Symfony 2.8:ホスト名に基づいてデータベースパラメータを動的に設定する方法

は、私は私が望む限り多くの環境を作成することができます知っているが、環境へのsintaxは、より多くのようなものです: - domainname.com/app_customer1.php/ [..] - domainname.com/app_customer2.php/ [ ..] - domainname.com/app_customer3.php/ [..]

ホワイト私はこのURL構造たいと思います:[customer2.domainname.com/ - - customer1.domainname.com/ [..] を..] - customer3.domainname.com/ [..]

別のLaravel 5プロジェクトで私はそのトリックを行うことができました。 Symfony 2.8でこれをどう対処することを提案しますか?

おかげで、 グイド

+0

あなたの問題を解決した場合は答えを受け入れてください:)それは良い答えだと思うなら、おそらく投票してください。ありがとうございました! – chalasr

答えて

3

あなたはこのような宿主に応じdatabase_nameを設定することができます。

// app/config/parameters.php 
<?php 

$dbName = 'default'; // For CLI 

if (isset($_SERVER['SERVER_NAME'])) { 
    $dbName = $_SERVER['SERVER_NAME']; 
} 

$container->setParameter('database_name', $dbName); 

設定:

# app/config/config.yml 
imports: 
    # ... 
    - { resource: parameters.php } 

doctrine: 
    # ... 
    dbal: 
     # ... 
     dbname: "%database_name%" 

をしかし、もしので、それは、CLIでは動作しません条件ベースのデータベース名(または他のパラメータ)を定義するためにLaravelで使用されるトリックを実装することができます。

+0

魅力のように動作します、ありがとう! – user3255068

+0

答えを受け入れることができますか? – chalasr

+0

Chalasr様、これを使用してSymfonyが最後のキャッシュの後に読み込まれる最初の時に使用された設定パラメータをキャッシュしています。つまり、キャッシュをクリアしてdb1.mysite.itにアクセスすると、db1のparamsが正しく読み込まれますが、それ以降はdb2.mysite.itにアクセスすると、(キャッシュのために)db1のパラメータが考慮されます。だから、この戦略を採用することはできません! – user3255068

関連する問題