如何根据主机匹配路由
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何根据主机匹配路由
也可以在HTTP上进行匹配宿主传入请求的。
- 注释
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/ / src /控制器/ MainController.php名称空间应用程序\控制器;使用ob娱乐下载\包\FrameworkBundle\控制器\控制器;使用ob娱乐下载\组件\路由\注释\路线;类MainController扩展控制器{/ * * *@Route(" name =“mobile_homepage”,主机= " m.example.com ") * /公共函数mobileHomepage(){/ /……}/ * * *@Route("/", name="首页")*/公共函数主页(){/ /……}}
两条路由匹配相同的路径/
,但是只有当主机为时,第一个才会匹配m.example.com
.
使用占位符
host选项使用与路径匹配系统相同的语法。这意味着你可以在主机名中使用占位符:
- 注释
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/ / src /控制器/ MainController.php名称空间应用程序\控制器;使用ob娱乐下载\包\FrameworkBundle\控制器\控制器;使用ob娱乐下载\组件\路由\注释\路线;类MainController扩展控制器{/ * * *@Route(" name =“projects_homepage”,主机= " .example.com {project_name} ") * /公共函数projectsHomepage(){/ /……}/ * * *@Route("/", name="首页")*/公共函数主页(){/ /……}}
您还可以为这些占位符设置需求和默认选项。例如,如果您希望两者都匹配m.example.com
而且mobile.example.com
,你可以用这个:
- 注释
- YAML
- XML
- PHP
12 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 /控制器/ MainController.php名称空间应用程序\控制器;使用ob娱乐下载\包\FrameworkBundle\控制器\控制器;使用ob娱乐下载\组件\路由\注释\路线;类MainController扩展控制器{/ * * *@Route( * "/", * name = " mobile_homepage ", *主机= "{子域名}.example.com”,*缺省值={“子域名”=“m”},*需求={“子域名”=“m |移动”}*)* /公共函数mobileHomepage(){/ /……}/ * * *@Route("/", name="首页")*/公共函数主页(){/ /……}}
提示
如果你不想硬编码主机名,你也可以使用服务参数:
- 注释
- YAML
- XML
- PHP
12 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 /控制器/ MainController.php名称空间应用程序\控制器;使用ob娱乐下载\包\FrameworkBundle\控制器\控制器;使用ob娱乐下载\组件\路由\注释\路线;类MainController扩展控制器{/ * * *@Route(* "/", * name=" mobile_首页",* host="m. "{域}", * defaults={"domain"="%domain%"}, * requirements={"domain"="%domain%"} * ) */公共函数mobileHomepage(){/ /……}/ * * *@Route("/", name="首页")*/公共函数主页(){/ /……}}
提示
属性的默认选项域
占位符,否则每次使用路由生成URL时都需要包含一个域值。
引入路由的主机匹配
还可以对引入的路由设置host选项:
- 注释
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13
/ / src /控制器/ MainController.php名称空间应用程序\控制器;使用ob娱乐下载\包\FrameworkBundle\控制器\控制器;使用ob娱乐下载\组件\路由\注释\路线;/ * * *@Route(主机= " hello.example.com ") * /类MainController扩展控制器{/ /……}
主机hello.example.com
将在从新路由资源加载的每个路由上设置。
测试你的控制器
如果你想在功能测试中通过url匹配,你需要在请求对象上设置主机HTTP头:
1 2 3 4 5 6 7
$履带=$客户端->请求(“得到”,' /主页',数组(),数组(),数组(“HTTP_HOST”= >“m”。.$客户端->getContainer ()->getParameter (“域”)));
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。