我正在Symfony 2中开发一个多子域Web应用程序。
子站点:
admin.example.com
是主要托管网站。member.example.com
是另一个指向相同源代码的子域。正如documentation中所述,我按如下方式配置了路由:
member.example.com
的家长路由:
my_app_member:
resource: "@member.yml"
prefix: /
host: "member.example.com"
注意:上述路由是member.example.com
中定义的member.yml
所有路由的父路由配置。
**现在我有admin.example.com
的另一条路线:**
admin_user_mod:
path: /admin/new
defaults: { _controller: "somecontroller" }
但是,如果我必须使用代码生成路由admin_user_mod
的完整网址:
$modLink = $this->get("router")->generate('admin_user_mod');
生成的路径路径正确但基本网址仍为member.example.com
,应为admin.example.com
有没有办法,或者我在上面的路线配置中遗漏任何东西以获得所需的结果。
或
是否有任何symfony事件监听器覆盖路由器的“generate()
”方法调用?
您的所有输入都非常值得注意。
谢谢
答案 0 :(得分:3)
路由器可以使用getContext()
方法:
$context = $this->getContainer()->get('router')->getContext();
$context->setHost('admin.example.com');
答案 1 :(得分:0)
正如Routing Documentation中所述,传递true作为generate方法的第三个参数将生成一个绝对URL。
所以在你的情况下会是......
$modLink = $this->get('router')->generate('admin_user_mod', [], true);
执行此操作时,请确保在路由配置中指定主机。例如,您的路线应该是......
admin_user_mod:
path: /admin/new
host: admin.example.com
defaults: { _controller: "somecontroller" }