2013-07-05 32 views
0

我想繼承一個bundle來僅覆蓋一些具有主機名條件的佈局部分。如何根據symfony2中的主機名來切換bundle

我的'FirstBundle'用於www.site1.com已準備就緒。我在MyApp的配置主路由/配置/ routing.yml中

www_site1_com: 
    resource: "@FirstBundle/Resources/config/routing.yml" 
    prefix: /

FirstBundle /資源/配置/ routing.yml中包含我的全路由。我需要堅持使用與SecondBundle相同的控制器和路由。

然後我創建了應該繼承FirstBundle的SecondBundle,但我真的不知道如何告訴路由在www.site2.com的SecondBundle中。

如果我添加在SecondBundle.php使用getParent方法來強制繼承:

class MyAppSecondBundle extends Bundle 
{ 
    public function getParent() 
    { 
    return 'FirstBundle'; 
    } 
} 

我site1的始終顯示繼承的東西...我不知道如何強制只SITE2堅持SecondBundle沒有SITE1受到影響。

回答

1

因爲symfony 2.2,你可以基於主機名匹配路線:

mobile_homepage: 
    path: /
    host:  m.example.com 
    defaults: { _controller: AcmeDemoBundle:Main:mobileHomepage } 

homepage: 
    path: /
    defaults: { _controller: AcmeDemoBundle:Main:homepage } 

the docs

+0

我忘了說我需要保持同樣的選擇,而無需改變控制器......這不是一個很好的解決方案對於我來說複製控制器或路由,因爲它們太多了...... – sigz