2012-01-13 74 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