自定义url生成器类

时间:2012-01-13 15:34:14

标签: symfony

我正在寻找一种方法来覆盖Symfony2中特定路由的url生成。 在symfony 1.4中我曾经这样做过:

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);
  }

}

1 个答案:

答案 0 :(得分:2)

您可以覆盖核心路由器类路径:

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

默认路由器类(Symfony \ Bundle \ FrameworkBundle \ Routing \ Router)有默认选项(请参阅方法setOptions()),您可以在应用参数中设置它们并覆盖所需的类,而不是所有路由器:

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

我希望这能解决你的问题。