【发布时间】:2023-03-22 09:32:02
【问题描述】:
我想定义一个路由“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)
这可能吗?
【问题讨论】: