如何匹配基于主机的路由

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.7,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何匹配基于主机的路由

你也可以匹配HTTP主机传入的请求。

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24
/ / src / Acme / DemoBundle /控制器/ MainController.php名称空间Acme\DemoBundle\控制器;使用ob娱乐下载\\FrameworkBundle\控制器\控制器;使用Sensio赞助\\FrameworkExtraBundle\配置\路线;MainController扩展控制器{/ * * *@Route(" name =“mobile_homepage”,主机= " m.example.com ") * /公共函数mobileHomepageAction(){/ /……}/ * * *@Route(" name = "主页")* /公共函数homepageAction(){/ /……}}

两个路线匹配相同的路径/然而,第一个将匹配只有在主机m.example.com

使用占位符

主机选择使用相同的语法匹配系统的必经之路。这意味着您可以在您的主机名中使用占位符:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24
/ / src / Acme / DemoBundle /控制器/ MainController.php名称空间Acme\DemoBundle\控制器;使用ob娱乐下载\\FrameworkBundle\控制器\控制器;使用Sensio赞助\\FrameworkExtraBundle\配置\路线;MainController扩展控制器{/ * * *@Route(" name =“projects_homepage”,主机= " .example.com {project_name} ") * /公共函数projectsHomepageAction(){/ /……}/ * * *@Route(" name = "主页")* /公共函数homepageAction(){/ /……}}

你也可以设置要求和这些占位符的默认选项。例如,如果你想匹配m.example.commobile.example.com你用这个:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30
/ / src / Acme / DemoBundle /控制器/ MainController.php名称空间Acme\DemoBundle\控制器;使用ob娱乐下载\\FrameworkBundle\控制器\控制器;使用Sensio赞助\\FrameworkExtraBundle\配置\路线;MainController扩展控制器{/ * * *@Route(* " / ",* name = " mobile_homepage ", *主机=“.example.com{子域名}”,*缺省值={“子域名”=“m”}, *需求={“子域名”=“m |移动”}*)* /公共函数mobileHomepageAction(){/ /……}/ * * *@Route(" name = "主页")* /公共函数homepageAction(){/ /……}}

提示

您还可以使用服务参数如果你不想硬编码的主机名:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30
/ / src / Acme / DemoBundle /控制器/ MainController.php名称空间Acme\DemoBundle\控制器;使用ob娱乐下载\\FrameworkBundle\控制器\控制器;使用Sensio赞助\\FrameworkExtraBundle\配置\路线;MainController扩展控制器{/ * * *@Route(* " / ",* name = " mobile_homepage ", *主机=“m。{域}", * defaults={"domain"="%domain%"}, * requirements={"domain"="%domain%"} * ) */< /span>公共函数mobileHomepageAction(){/ /……}/ * * *@Route(" name = "主页")* /公共函数homepageAction(){/ /……}}

提示

确保你还包含一个默认的选择占位符,否则你需要包括一个域值每次生成一个URL使用路线。

使用主机配套的进口路线

你也可以设置主机选项对进口航线:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13
/ / src / Acme / HelloBundle /控制器/ MainController.php名称空间Acme\HelloBundle\控制器;使用ob娱乐下载\\FrameworkBundle\控制器\控制器;使用Sensio赞助\\FrameworkExtraBundle\配置\路线;/ * * *@Route(主机= " hello.example.com ") * /MainController扩展控制器{/ /……}

主机hello.example.com将在每个路线从新的路由资源加载。

测试控制器

你需要设置主机HTTP头请求对象如果你想过去你的url匹配功能测试:

1 2 3 4 5 6 7
美元履带=美元客户端- >请求(“得到”,' /主页',数组(),数组(),数组(“HTTP_HOST”= >“m”。美元客户端- >getContainer ()- >getParameter (“域”)));
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。