在 Symfony2 中的多个子域主机名中生成适当的 url

Sun*_*mar 1 php routing yaml symfony

我正在 Symfony 2 中开发一个多子域 Web 应用程序。

子域:

  • admin.example.com 是主要的托管站点。
  • member.example.com 是另一个指向相同源代码的子域。

正如此处的文档中所述,我将路由配置如下:

父路由member.example.com

my_app_member:
    resource: "@member.yml"
    prefix:   /
    host:     "member.example.com"
Run Code Online (Sandbox Code Playgroud)

注意:上面的路由是 中member.example.com定义的所有路由的父路由配置member.yml

**现在我有另一条路线admin.example.com:**

admin_user_mod:
    path:     /admin/new
    defaults: { _controller: "somecontroller" }
Run Code Online (Sandbox Code Playgroud)

但是,如果我必须admin_user_mod使用代码为路线生成完整的 url :

$modLink = $this->get("router")->generate('admin_user_mod');
Run Code Online (Sandbox Code Playgroud)

生成的路线路径是正确的,但基本URL仍然停留为member.example.com这应该是admin.example.com

有没有办法,或者我在上面的路由配置中缺少任何内容来获得所需的结果。

或者

是否有任何 symfony 事件侦听器来覆盖路由器的“ generate()”方法调用?

你所有的投入都是非常可观的。

谢谢

Kon*_*lov 5

路由器有getContext()你可以使用的方法:

$context = $this->getContainer()->get('router')->getContext();
$context->setHost('admin.example.com');
Run Code Online (Sandbox Code Playgroud)