2012-01-13 75 views
0

我正在尋找一種方法來重寫Symfony2中特定路由的url生成。 在symfony的1.4我用來做這樣的:自定義url生成器類

RouteName: 
    class: sfDoctrineRouteCollection 
    options: 
    model:    Model 
    prefix_path:   /route/:id/:slug 
    column:    id 
    route_class:   CustomDoctrineRoute 

class CustomDoctrineRoute extends sfDoctrineRoute 
{ 
    public function generate($params, $context = array(), $absolute = false) 
    { 
    //custom logic on route params 

    return parent::generate($params, $context, $absolute); 
    } 

} 
+0

密切相關:http://stackoverflow.com/a/9016324/219931 – Dziamid 2012-01-30 10:50:36

回答

2

您可以覆蓋核心路由器類路徑:

<parameters> 
    <parameter key="router.class">Company\Bundle\Router\CustomRouter</parameter> 
</parameters> 

默認路由器類(Symfony的\包\ FrameworkBundle \ Routing \ Router)具有默認選項(請參閱setOptions()方法),您可以將它們設置爲您的應用參數並覆蓋所需的類,而不是所有路由器:

router.options.generator_class: Company\Bundle\Router\UrlGenerator 

我希望這能解決您的問題。

+0

當我使用這個解決方案時,我必須做「router.options.generator_base_class」才能使它工作。但是這個解決方案的確讓我指向了正確的方向。只要參考FrameworkBundle的routing.xml – KSolo 2013-01-29 21:13:08

+0

@KSolo我試圖讓這個工作,但不知道我必須做什麼。我有rounting.yml文件和config.yml。你能指點我正確的方向嗎?我已經創建了類,只需要設置router.options.generator_base_class路徑 – Basit 2015-09-15 19:52:24