3

サブドメインを使用してさまざまなセクションを提供する Symfony2 アプリケーションを構築しています。

  1. api.tld.com - API システム
  2. docs.tld.com - ドキュメンテーション
  3. assets.tld.com - 画像を提供するためのシステム

これを行う方法は、サブドメインごとに app ディレクトリを作成し、標準の /app ディレクトリを中央の共有構成として保持することです。各アプリの Web ディレクトリには、カスタム ブートストラップもあります。サブドメインは、.htaccess を使用して適切にルーティングされます。

私が抱えている問題は、特に独自のルーティング インポートがある場合に、複数の構成ファイルが入る場所です。場合によっては、最大 4 つの configs.yml ファイルが存在する可能性があります。たとえば、次の URL を見てください。

http://testing.docs.tld.com

構成セットアップは現在このように機能します(そして機能します)

  1. tld.com - /app/config/config.yml にあるグローバル設定
  2. testing - /app/config/config_testing.yml にある環境設定。この構成は、同じディレクトリに config_dev.yml もインポートします。
  3. 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 内では機能しないため、その段階ではルーターがアクティブになっていないと想定しています。

誰にもアイデアはありますか?とても感謝しています。

4

1 に答える 1