我們正在建設一個Symfony2的應用程序將使用子域名服務於不同的部分路由文件:Symfony2的多個配置和子站點的路由
- api.tld.com - API系統
- docs.tld.com - 文檔
- assets.tld.com - 系統提供圖片
我們做得怎麼樣,這是創建爲每個子域的應用程序目錄,並保持標準/ app目錄中地方作爲岑tral共享配置。每個應用程序的web目錄中還有一個自定義引導程序。子域使用.htaccess進行相應的路由。
我遇到的問題是多個配置文件進來,特別是當他們有自己的路由導入。在某些情況下,最多可以有4個configs.yml文件。看看下面的網址,例如:
的配置設置目前是這樣的(和它的作品)
- tld.com - 位於/app/config/config.yml全局配置
- 測試 - 位於/app/config/config_testing.yml的環境配置。該配置還會在同一目錄中導入config_dev.yml。
- 文檔 - 應用程序配置位於/app_docs/config/config.yml
這些都是進口的AppKernal在/app_docs/AppKernal.php:
// 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');
現在CONFIGS負荷剛精細。但是,我遇到的問題並沒有找到任何明確的文檔,這些配置中有多個配置定義了框架:router:resources。在上面的例子CONFIGS,這些被加載(試圖反正)如下:
/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%
所有的configs的加載罰款。但是我發現只有最後一個路由文件被包含在內。所以我認爲規則是他們被覆蓋作爲一個規則,而不是擴展。
因此,我花了幾天的時間試圖發現,是否有可能以上述方式擴展配置文件中的路由文件?我調查的另一個選項是找到一種方法來在AppKernal文件中導入路由文件。我只能找到this,它不能準確解釋應該在什麼時候使用(或在哪裏)。它在包含配置的AppKernal中不起作用,所以我假設路由器在該階段不活躍。
任何人有任何想法?我會很感激。
您是否嘗試刪除框架:從共享應用程序的配置並導入共享途徑像你這樣的包會的路線:路由器? –
你能更新到2.2嗎?因爲那裏,路由框架知道主機要求。 http://symfony.com/doc/2.2/components/routing/hostname_pattern.html –