サブドメインを使用してさまざまなセクションを提供する Symfony2 アプリケーションを構築しています。
- api.tld.com - API システム
- docs.tld.com - ドキュメンテーション
- assets.tld.com - 画像を提供するためのシステム
これを行う方法は、サブドメインごとに app ディレクトリを作成し、標準の /app ディレクトリを中央の共有構成として保持することです。各アプリの Web ディレクトリには、カスタム ブートストラップもあります。サブドメインは、.htaccess を使用して適切にルーティングされます。
私が抱えている問題は、特に独自のルーティング インポートがある場合に、複数の構成ファイルが入る場所です。場合によっては、最大 4 つの configs.yml ファイルが存在する可能性があります。たとえば、次の URL を見てください。
構成セットアップは現在このように機能します(そして機能します)
- tld.com - /app/config/config.yml にあるグローバル設定
- testing - /app/config/config_testing.yml にある環境設定。この構成は、同じディレクトリに config_dev.yml もインポートします。
- docs - /app_docs/config/config.yml にあるアプリ構成
これらはすべて、/app_docs/AppKernal.php の AppKernal にインポートされます。
// Load Global Configuration
// ROUTES INSIDE THIS CONFIG ARE NOT BEING LOADED
$loader->load(__DIR__.'/../app/config/config.yml');
// Load Environment Configuration
// ROUTES INSIDE THIS CONFIG ARE NOT BEING LOADED
$loader->load(__DIR__.'/../app/config/config_' . $this->getEnvironment() . '.yml');
// Load App-centric Configuration
$loader->load(__DIR__.'/config/config.yml');
これで、構成が正常にロードされます。しかし、私が問題を抱えており、決定的なドキュメントが見つからないのは、これらの構成の複数がフレームワーク: ルーター: リソースを定義している場合です。上記の構成例では、これらは次のようにロードされます (いずれにしても試行されます)。
/app/config/config.yml
framework:
secret:%secret%
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: %kernel.debug%
/app/config/config_testing.yml
// No special Routing
/app/config/config_dev.yml
framework:
router: { resource: "%kernel.root_dir%/config/routing_dev.yml" }
/app_docs/config/config.yml
framework:
secret: %secret%
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: %kernel.debug%
すべての構成が正常にロードされています。しかし、私が見つけたのは、上記で呼び出された最後のルーティング ファイルだけが含まれているということです。したがって、ルールは、拡張されるのではなく、ルールとしてオーバーライドされるということだと思います。
それで、私がここ数日かけて見つけようとしていたのは、上記の方法で構成ファイル内にルーティングファイルを含めることを拡張することは可能ですか? 私が調査したもう 1 つのオプションは、ルーティング ファイルを AppKernal ファイルにインポートする方法を見つけることでした。これは、これをどの時点で (またはどこで) 使用する必要があるかを正確に説明していません。構成が含まれている AppKernal 内では機能しないため、その段階ではルーターがアクティブになっていないと想定しています。
誰にもアイデアはありますか?とても感謝しています。