基于主机的Symfony路由

时间:2014-04-19 20:54:28

标签: php symfony routing

我想定义一条路线' product_page'它将根据主机映射到不同的模式。每个路由的模式都不同,但我希望路由名称相同,以便在通过路由生成URL时(基于传递的主机名),我可以在控制台命令中使用相同的名称。我无法弄清楚如何实现这一点,因为似乎同名的路由会覆盖以前的路由。例如:

product_page:
    pattern:  /product_page_type_1/{id}
    host: domain1.com
    defaults: { _controller: AcmeDemoBundle:Default:index}
    requirements:
        id: '[\d]+'

product_page:
    pattern:  /product_page_type_2/{id}
    host: domain2.com
    defaults: { _controller: AcmeDemoBundle:Default:index}
    requirements:
        id: '[\d]+'

然后,在我的控制台命令中,我想基于product_page路由和主机生成URL。例如:

//should equal http://domain1.com/product_page_type_1/999
$this->getContainer()->get('router')->generate('product_page', array('id' => 99, 'host' => 'domain1.com'), UrlGenerator::ABSOLUTE_URL)

//should equal http://domain2.com/product_page_type_2/999
$this->getContainer()->get('router')->generate('product_page', array('id' => 99, 'host' => 'domain2.com'), UrlGenerator::ABSOLUTE_URL)

这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

因为你的第二条路线正在覆盖第一条路线。它们不应该被命名为相同,只需命名它们:domain1_product_pagedomain2_product_page或类似的东西。