路由
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.1,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
控制器动作生成响应。路由配置定义了哪些行动来运行为每个传入的URL。它还提供了其他有用的特性,比如生成seo友好的url(例如。/读/ intro-to-sy欧宝娱乐app下载地址mfony
而不是index . php ? article_id = 57
)。
欧宝娱乐app下载地址Symfony推荐注释因为它是方便把路线和控制器在同一个地方。
除了安装所需的依赖项,这个命令创建以下配置文件:
1 2 3 4 5 6 7 8
#配置/线路/ annotations.yaml控制器:资源:. . / . . / src /控制器/类型:注释内核:资源:. . / . . / src / Kernel.php类型:注释
这个配置告诉Symfony寻找路线定义为在任何PH欧宝娱乐app下载地址P类存储在注释src /控制器/
目录中。
假设您想定义的路线/博客
URL在您的应用程序。为此,创建一个控制器类如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *@Route(name = " /博客”“blog_list”) * /公共函数列表():响应{/ /……}}
这个配置定义了一个路线blog_list
当用户请求相匹配/博客
URL。发生匹配时,应用程序运行列表()
的方法BlogController
类。
请注意
一个URL的查询字符串匹配时不考虑路线。在本例中,url/博客? foo = bar
和/博客? foo = bar bar = foo
也会匹配blog_list
路线。
谨慎
如果你在同一个文件中定义多个PHP类,Symfony只有加载航线的头等舱,忽略所有其他路线。欧宝娱乐app下载地址
路线名称(blog_list
)并不重要,但以后这将是必不可少的生成的url。你只需要记住,在应用程序中每个路线名称必须是惟一的。
得到,帖子
,把
等)的使用方法
选项限制动词每个路线应该回应:
- 注释
- 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
/ / src /控制器/ BlogApiController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogApiController扩展AbstractController{/ * * *@Route(“/ api /文章/ {id}”,方法={“得到”、“头”})* /公共函数显示(int美元id):响应{/ /……后返回一个JSON响应}/ * * *@Route(“/ api /文章/ {id}”,方法={}“放”)* /公共函数编辑(int美元id):响应{/ /……编辑一篇文章}}
1 2 3 4 5 6 7 8 9 10
#配置/ routes.yamlapi_post_show:路径:/ api /文章/ {id}控制器:控制器应用\ \ BlogApiController::显示方法:得到|头api_post_edit:路径:/ api /文章/ {id}控制器:应用程序控制器\ \ BlogApiController::编辑方法:把
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“api_post_show”路径=“/ api /职位/ {id}”控制器=“应用程序控制器\ \ BlogApiController:秀”方法=“|头”/ ><路线id=“api_post_edit”路径=“/ api /职位/ {id}”控制器=“应用程序控制器\ \ BlogApiController:编辑”方法=“把”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/ /配置/ routes.php使用应用程序\控制器\BlogApiController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“api_post_show”,' / api /文章/ {id} ')- >控制器([BlogApiController::类,“显示”])- >方法([“得到”,“头”]);美元路线- >add (“api_post_edit”,' / api /文章/ {id} ')- >控制器([BlogApiController::类,“编辑”])- >方法([“把”]);};
提示
HTML表单只支持得到
和帖子
方法。如果你调用路线用不同的方法从一个HTML表单,添加一个隐藏字段_method
方法使用(如。< input type = "隐藏" name = " _method " value = "把" / >
)。如果您创建表单欧宝娱乐app下载地址Symfony的形式这个过程是自动完成的。
条件选择如果你需要一些途径匹配基于任意匹配逻辑:
- 注释
- 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 /控制器/ DefaultController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类DefaultController扩展AbstractController{/ * * *@Route(* " /接触”,*的名字=“接触”,*条件=“context.getMethod()[‘得到’,‘头’]和request.headers.get(“用户代理”)匹配/ firefox /我”*)* *表达式还可以包括配置参数:*条件:”request.headers.get(“用户代理”)匹配' %应用。allowed_browsers %”* /公共函数联系():响应{/ /……}}
1 2 3 4 5 6 7
#配置/ routes.yaml联系人:路径:/联系控制器:“App \控制器\ DefaultController:接触”条件:“context.getMethod()[‘得到’,‘头’]和request.headers.get(“用户代理”)匹配/ firefox /我”#表达式还可以包括配置参数:#条件:" request.headers.get(“用户代理”)匹配% app.allowed_browsers %”
1 2 3 4 5 6 7 8 9 10 11 12 13
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“接触”路径=“/接触”控制器=“应用程序控制器\ \ DefaultController:接触”><条件>context.getMethod()[‘得到’,‘头’]和request.headers.get(“用户代理”)匹配/ firefox /我的< /条件>< !——表达式还可以包括配置参数:- - >< !——<条件> request.headers.get(“用户代理”)匹配' %应用。allowed_browsers %’< /条件> - - >< /路线>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12
/ /配置/ routes.php使用应用程序\控制器\DefaultController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“接触”,' /接触')- >控制器([DefaultController::类,“接触”])- >条件(“context.getMethod()(“得到”、“头”)和request.headers.get(“用户代理”)匹配“/ firefox /我”)/ /表达式还可以包括配置参数:/ /“request.headers.get(“用户代理”)匹配“% app.allowed_browsers %”;};
的值条件
选择是任何有效的ExpressionLanguage表达式可以使用任何这些Symfony创建的变量:欧宝娱乐app下载地址
-
上下文
-
的一个实例RequestContext持有最基本匹配的路由信息。
-
请求
-
的欧宝娱乐app下载地址Symfony的请求对象代表了当前请求。
在幕后,表达式编译原始PHP。因此,使用条件
主要原因没有额外的开销超出了时间底层PHP执行。
谨慎
条件是不 考虑当生成url(本文后面会详细解释)。
欧宝娱乐app下载地址Symfony推荐注释因为它是方便把路线和控制器在同一个地方。
除了安装所需的依赖项,这个命令创建以下配置文件:
1 2 3 4 5 6 7 8
#配置/线路/ annotations.yaml控制器:资源:. . / . . / src /控制器/类型:注释内核:资源:. . / . . / src / Kernel.php类型:注释
这个配置告诉Symfony寻找路线定义为在任何PH欧宝娱乐app下载地址P类存储在注释src /控制器/
目录中。
假设您想定义的路线/博客
URL在您的应用程序。为此,创建一个控制器类如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *@Route(name = " /博客”“blog_list”) * /公共函数列表():响应{/ /……}}
这个配置定义了一个路线blog_list
当用户请求相匹配/博客
URL。发生匹配时,应用程序运行列表()
的方法BlogController
类。
请注意
一个URL的查询字符串匹配时不考虑路线。在本例中,url/博客? foo = bar
和/博客? foo = bar bar = foo
也会匹配blog_list
路线。
谨慎
如果你在同一个文件中定义多个PHP类,Symfony只有加载航线的头等舱,忽略所有其他路线。欧宝娱乐app下载地址
路线名称(blog_list
)并不重要,但以后这将是必不可少的生成的url。你只需要记住,在应用程序中每个路线名称必须是惟一的。
得到,帖子
,把
等)的使用方法
选项限制动词每个路线应该回应:
- 注释
- 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
/ / src /控制器/ BlogApiController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogApiController扩展AbstractController{/ * * *@Route(“/ api /文章/ {id}”,方法={“得到”、“头”})* /公共函数显示(int美元id):响应{/ /……后返回一个JSON响应}/ * * *@Route(“/ api /文章/ {id}”,方法={}“放”)* /公共函数编辑(int美元id):响应{/ /……编辑一篇文章}}
1 2 3 4 5 6 7 8 9 10
#配置/ routes.yamlapi_post_show:路径:/ api /文章/ {id}控制器:控制器应用\ \ BlogApiController::显示方法:得到|头api_post_edit:路径:/ api /文章/ {id}控制器:应用程序控制器\ \ BlogApiController::编辑方法:把
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“api_post_show”路径=“/ api /职位/ {id}”控制器=“应用程序控制器\ \ BlogApiController:秀”方法=“|头”/ ><路线id=“api_post_edit”路径=“/ api /职位/ {id}”控制器=“应用程序控制器\ \ BlogApiController:编辑”方法=“把”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/ /配置/ routes.php使用应用程序\控制器\BlogApiController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“api_post_show”,' / api /文章/ {id} ')- >控制器([BlogApiController::类,“显示”])- >方法([“得到”,“头”]);美元路线- >add (“api_post_edit”,' / api /文章/ {id} ')- >控制器([BlogApiController::类,“编辑”])- >方法([“把”]);};
提示
HTML表单只支持得到
和帖子
方法。如果你调用路线用不同的方法从一个HTML表单,添加一个隐藏字段_method
方法使用(如。< input type = "隐藏" name = " _method " value = "把" / >
)。如果您创建表单欧宝娱乐app下载地址Symfony的形式这个过程是自动完成的。
- 注释
- 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
/ / src /控制器/ BlogApiController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogApiController扩展AbstractController{/ * * *@Route(“/ api /文章/ {id}”,方法={“得到”、“头”})* /公共函数显示(int美元id):响应{/ /……后返回一个JSON响应}/ * * *@Route(“/ api /文章/ {id}”,方法={}“放”)* /公共函数编辑(int美元id):响应{/ /……编辑一篇文章}}
1 2 3 4 5 6 7 8 9 10
#配置/ routes.yamlapi_post_show:路径:/ api /文章/ {id}控制器:控制器应用\ \ BlogApiController::显示方法:得到|头api_post_edit:路径:/ api /文章/ {id}控制器:应用程序控制器\ \ BlogApiController::编辑方法:把
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“api_post_show”路径=“/ api /职位/ {id}”控制器=“应用程序控制器\ \ BlogApiController:秀”方法=“|头”/ ><路线id=“api_post_edit”路径=“/ api /职位/ {id}”控制器=“应用程序控制器\ \ BlogApiController:编辑”方法=“把”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/ /配置/ routes.php使用应用程序\控制器\BlogApiController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“api_post_show”,' / api /文章/ {id} ')- >控制器([BlogApiController::类,“显示”])- >方法([“得到”,“头”]);美元路线- >add (“api_post_edit”,' / api /文章/ {id} ')- >控制器([BlogApiController::类,“编辑”])- >方法([“把”]);};
提示
HTML表单只支持得到
和帖子
方法。如果你调用路线用不同的方法从一个HTML表单,添加一个隐藏字段_method
方法使用(如。< input type = "隐藏" name = " _method " value = "把" / >
)。如果您创建表单欧宝娱乐app下载地址Symfony的形式这个过程是自动完成的。
条件选择如果你需要一些途径匹配基于任意匹配逻辑:
- 注释
- 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 /控制器/ DefaultController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类DefaultController扩展AbstractController{/ * * *@Route(* " /接触”,*的名字=“接触”,*条件=“context.getMethod()[‘得到’,‘头’]和request.headers.get(“用户代理”)匹配/ firefox /我”*)* *表达式还可以包括配置参数:*条件:”request.headers.get(“用户代理”)匹配' %应用。allowed_browsers %”* /公共函数联系():响应{/ /……}}
1 2 3 4 5 6 7
#配置/ routes.yaml联系人:路径:/联系控制器:“App \控制器\ DefaultController:接触”条件:“context.getMethod()[‘得到’,‘头’]和request.headers.get(“用户代理”)匹配/ firefox /我”#表达式还可以包括配置参数:#条件:" request.headers.get(“用户代理”)匹配% app.allowed_browsers %”
1 2 3 4 5 6 7 8 9 10 11 12 13
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“接触”路径=“/接触”控制器=“应用程序控制器\ \ DefaultController:接触”><条件>context.getMethod()[‘得到’,‘头’]和request.headers.get(“用户代理”)匹配/ firefox /我的< /条件>< !——表达式还可以包括配置参数:- - >< !——<条件> request.headers.get(“用户代理”)匹配' %应用。allowed_browsers %’< /条件> - - >< /路线>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12
/ /配置/ routes.php使用应用程序\控制器\DefaultController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“接触”,' /接触')- >控制器([DefaultController::类,“接触”])- >条件(“context.getMethod()(“得到”、“头”)和request.headers.get(“用户代理”)匹配“/ firefox /我”)/ /表达式还可以包括配置参数:/ /“request.headers.get(“用户代理”)匹配“% app.allowed_browsers %”;};
的值条件
选择是任何有效的ExpressionLanguage表达式可以使用任何这些Symfony创建的变量:欧宝娱乐app下载地址
-
上下文
-
的一个实例RequestContext持有最基本匹配的路由信息。
-
请求
-
的欧宝娱乐app下载地址Symfony的请求对象代表了当前请求。
在幕后,表达式编译原始PHP。因此,使用条件
主要原因没有额外的开销超出了时间底层PHP执行。
谨慎
条件是不 考虑当生成url(本文后面会详细解释)。
- 注释
- 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 /控制器/ DefaultController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类DefaultController扩展AbstractController{/ * * *@Route(* " /接触”,*的名字=“接触”,*条件=“context.getMethod()[‘得到’,‘头’]和request.headers.get(“用户代理”)匹配/ firefox /我”*)* *表达式还可以包括配置参数:*条件:”request.headers.get(“用户代理”)匹配' %应用。allowed_browsers %”* /公共函数联系():响应{/ /……}}
1 2 3 4 5 6 7
#配置/ routes.yaml联系人:路径:/联系控制器:“App \控制器\ DefaultController:接触”条件:“context.getMethod()[‘得到’,‘头’]和request.headers.get(“用户代理”)匹配/ firefox /我”#表达式还可以包括配置参数:#条件:" request.headers.get(“用户代理”)匹配% app.allowed_browsers %”
1 2 3 4 5 6 7 8 9 10 11 12 13
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“接触”路径=“/接触”控制器=“应用程序控制器\ \ DefaultController:接触”><条件>context.getMethod()[‘得到’,‘头’]和request.headers.get(“用户代理”)匹配/ firefox /我的< /条件>< !——表达式还可以包括配置参数:- - >< !——<条件> request.headers.get(“用户代理”)匹配' %应用。allowed_browsers %’< /条件> - - >< /路线>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12
/ /配置/ routes.php使用应用程序\控制器\DefaultController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“接触”,' /接触')- >控制器([DefaultController::类,“接触”])- >条件(“context.getMethod()(“得到”、“头”)和request.headers.get(“用户代理”)匹配“/ firefox /我”)/ /表达式还可以包括配置参数:/ /“request.headers.get(“用户代理”)匹配“% app.allowed_browsers %”;};
条件
选择是任何有效的ExpressionLanguage表达式可以使用任何这些Symfony创建的变量:欧宝娱乐app下载地址上下文
请求
条件
主要原因没有额外的开销超出了时间底层PHP执行。谨慎
条件是
/博客)。然而,它的共同定义路线部分变量。例如,URL显示一些博客可能会包括标题或蛞蝓(如。/博客/第一篇博客
或/博客/ all-about-s欧宝娱乐app下载地址ymfony
)。
在Sy欧宝娱乐app下载地址mfony的路线,变量部分是裹着{…}
他们必须有一个唯一的名称。例如,路线显示博客内容被定义为/博客/{蛞蝓}
:
- 注释
- 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
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ /……/ * * *@Route(“/博客/{蛞蝓}”,name = " blog_show ") * /公共函数显示(字符串美元鼻涕虫):响应{/ /美元料将平等的动态URL的一部分/ /如在/博客/ yay-routing,那么$蛞蝓=“yay-routing”/ /……}}
1 2 3 4
#配置/ routes.yamlblog_show:路径:/博客/{蛞蝓}控制器:控制器应用\ \ BlogController::显示
1 2 3 4 5 6 7 8 9 10
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“blog_show”路径=“/博客/{蛞蝓}”控制器=“应用程序控制器\ \ BlogController:秀”/ >< /路线>
1 2 3 4 5 6 7 8 9
/ /配置/ routes.php使用应用程序\控制器\BlogController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“blog_show”,“/博客/{蛞蝓}”)- >控制器([BlogController::类,“显示”]);};
变量的名称部分({蛞蝓}
在这个例子中)用于创建一个PHP变量,这条路线内容存储和传递给控制器。如果一个用户访问/博客/第一篇博客
URL, 欧宝娱乐app下载地址Symfony执行显示()
方法BlogController
类和通过蛞蝓=美元的第一篇博客
参数显示()
方法。
路线可以定义任意数量的参数,但是每个人只能使用一次(如在每个路线。/博客/关于-{类别}/页面/ {pageNumber}
)。
blog_show路线(网址:/博客/{蛞蝓}
)和一个blog_list
路线(网址:页面/博客/ {}
)。鉴于线路参数接受任何价值,没有办法区分两种路线。
如果用户请求/博客/第一篇博客
路线将匹配和Symfony将使用第一个定义的路线。欧宝娱乐app下载地址为了解决这个问题,添加一些验证{页面}
参数使用需求
选择:
- 注释
- 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
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *@Route(“/博客/{页面}”,name = " blog_list "需求={"页面" = " \ d + "}) * /公共函数列表(int美元页面):响应{/ /……}/ * * *@Route(“/博客/{蛞蝓}”,name = " blog_show ") * /公共函数显示(字符串美元鼻涕虫):响应{/ /……}}
1 2 3 4 5 6 7 8 9 10
#配置/ routes.yamlblog_list:路径:页面/博客/ {}控制器:控制器应用\ \ BlogController:列表要求:页面:“\ d +”blog_show:路径:/博客/{蛞蝓}控制器:控制器应用\ \ BlogController::显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“blog_list”路径=“/博客/{页面}”控制器=“应用程序控制器\ \ BlogController:列表”><要求关键=“页面”>\ d +< /要求>< /路线><路线id=“blog_show”路径=“/博客/{蛞蝓}”控制器=“应用程序控制器\ \ BlogController:秀”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/ /配置/ routes.php使用应用程序\控制器\BlogController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“blog_list”,“/博客/{页面}”)- >控制器([BlogController::类,“列表”])- >需求([“页面”= >“\ d +”]);美元路线- >add (“blog_show”,“/博客/{蛞蝓}”)- >控制器([BlogController::类,“显示”]);/ /……};
的需求
选项定义了PHP正则表达式这条路必须匹配整个路线匹配参数。在这个例子中,\ d +
是一个正则表达式相匹配的数字 任何长度。现在:
URL
路线
参数
/博客/ 2
blog_list
美元的页面
=2
/博客/第一篇博客
blog_show
美元蛞蝓
=第一篇博客
提示
路线需求(和路由路径)可以包括容器参数定义复杂的正则表达式,它是有用的在多个线路一旦和重用它们。
提示
参数也支持PCRE Unicode属性的转义序列匹配通用字符类型。例如,陆\ p {}
匹配任何大写字符在任何语言中,希腊\ p {}
匹配任何希腊字符等。
请注意
当使用正则表达式在路由参数,您可以设置use utf8
路线选择真正的
做出任何。
字符匹配任何utf - 8字符而不是单个字节。
如果你喜欢,需求可以在每个参数使用内联语法{parameter_name <规定>}
。这个特性使得配置更简洁,但它可以减少路由可读性时需求是复杂的:
- 注释
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *@Route(“/博客/{页< \ d + >}”, name = " blog_list ") * /公共函数列表(int美元页面):响应{/ /……}}
1 2 3 4
#配置/ routes.yamlblog_list:路径:/博客/{页< \ d + >}控制器:控制器应用\ \ BlogController:列表
1 2 3 4 5 6 7 8 9 10 11 12
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“blog_list”路径=“/博客/{页< \ d + >}”控制器=“应用程序控制器\ \ BlogController:列表”/ >< !——……- - >< /路线>
1 2 3 4 5 6 7 8 9 10
/ /配置/ routes.php使用应用程序\控制器\BlogController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“blog_list”,' /博客/{页< \ d + >} ')- >控制器([BlogController::类,“列表”]);/ /……};
当定义一个贪婪模式匹配许多航线,这可能是一开始你的路由集合,防止任何路由定义匹配。一个优先级
可选参数可用来让你选择的路线,它是只有当使用注释。
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
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *这条路有一个贪婪的模式和定义。* *@Route(“/博客/{蛞蝓}”,name = " blog_show ") * /公共函数显示(字符串美元鼻涕虫){/ /……}/ * * *不能匹配这条路线不定义优先级高于0。* *@Route(name = " /博客/名单”“blog_list”,优先级= 2)* /公共函数列表(){/ /……}}
优先级参数预计一个整数值。路线与更高的优先级排序前路线较低的优先级。当它没有定义默认值是0
。
{…}
他们必须有一个唯一的名称。例如,路线显示博客内容被定义为/博客/{蛞蝓}
:- 注释
- 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
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ /……/ * * *@Route(“/博客/{蛞蝓}”,name = " blog_show ") * /公共函数显示(字符串美元鼻涕虫):响应{/ /美元料将平等的动态URL的一部分/ /如在/博客/ yay-routing,那么$蛞蝓=“yay-routing”/ /……}}
1 2 3 4
#配置/ routes.yamlblog_show:路径:/博客/{蛞蝓}控制器:控制器应用\ \ BlogController::显示
1 2 3 4 5 6 7 8 9 10
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“blog_show”路径=“/博客/{蛞蝓}”控制器=“应用程序控制器\ \ BlogController:秀”/ >< /路线>
1 2 3 4 5 6 7 8 9
/ /配置/ routes.php使用应用程序\控制器\BlogController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“blog_show”,“/博客/{蛞蝓}”)- >控制器([BlogController::类,“显示”]);};
{蛞蝓}
在这个例子中)用于创建一个PHP变量,这条路线内容存储和传递给控制器。如果一个用户访问/博客/第一篇博客
URL, 欧宝娱乐app下载地址Symfony执行显示()
方法BlogController
类和通过蛞蝓=美元的第一篇博客
参数显示()
方法。/博客/关于-{类别}/页面/ {pageNumber}
)。blog_show路线(网址:/博客/{蛞蝓}
)和一个blog_list
路线(网址:页面/博客/ {}
)。鉴于线路参数接受任何价值,没有办法区分两种路线。
如果用户请求/博客/第一篇博客
路线将匹配和Symfony将使用第一个定义的路线。欧宝娱乐app下载地址为了解决这个问题,添加一些验证{页面}
参数使用需求
选择:
- 注释
- 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
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *@Route(“/博客/{页面}”,name = " blog_list "需求={"页面" = " \ d + "}) * /公共函数列表(int美元页面):响应{/ /……}/ * * *@Route(“/博客/{蛞蝓}”,name = " blog_show ") * /公共函数显示(字符串美元鼻涕虫):响应{/ /……}}
1 2 3 4 5 6 7 8 9 10
#配置/ routes.yamlblog_list:路径:页面/博客/ {}控制器:控制器应用\ \ BlogController:列表要求:页面:“\ d +”blog_show:路径:/博客/{蛞蝓}控制器:控制器应用\ \ BlogController::显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“blog_list”路径=“/博客/{页面}”控制器=“应用程序控制器\ \ BlogController:列表”><要求关键=“页面”>\ d +< /要求>< /路线><路线id=“blog_show”路径=“/博客/{蛞蝓}”控制器=“应用程序控制器\ \ BlogController:秀”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/ /配置/ routes.php使用应用程序\控制器\BlogController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“blog_list”,“/博客/{页面}”)- >控制器([BlogController::类,“列表”])- >需求([“页面”= >“\ d +”]);美元路线- >add (“blog_show”,“/博客/{蛞蝓}”)- >控制器([BlogController::类,“显示”]);/ /……};
的需求
选项定义了PHP正则表达式这条路必须匹配整个路线匹配参数。在这个例子中,\ d +
是一个正则表达式相匹配的数字 任何长度。现在:
URL
路线
参数
/博客/ 2
blog_list
美元的页面
=2
/博客/第一篇博客
blog_show
美元蛞蝓
=第一篇博客
提示
路线需求(和路由路径)可以包括容器参数定义复杂的正则表达式,它是有用的在多个线路一旦和重用它们。
提示
参数也支持PCRE Unicode属性的转义序列匹配通用字符类型。例如,陆\ p {}
匹配任何大写字符在任何语言中,希腊\ p {}
匹配任何希腊字符等。
请注意
当使用正则表达式在路由参数,您可以设置use utf8
路线选择真正的
做出任何。
字符匹配任何utf - 8字符而不是单个字节。
如果你喜欢,需求可以在每个参数使用内联语法{parameter_name <规定>}
。这个特性使得配置更简洁,但它可以减少路由可读性时需求是复杂的:
- 注释
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *@Route(“/博客/{页< \ d + >}”, name = " blog_list ") * /公共函数列表(int美元页面):响应{/ /……}}
1 2 3 4
#配置/ routes.yamlblog_list:路径:/博客/{页< \ d + >}控制器:控制器应用\ \ BlogController:列表
1 2 3 4 5 6 7 8 9 10 11 12
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“blog_list”路径=“/博客/{页< \ d + >}”控制器=“应用程序控制器\ \ BlogController:列表”/ >< !——……- - >< /路线>
1 2 3 4 5 6 7 8 9 10
/ /配置/ routes.php使用应用程序\控制器\BlogController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“blog_list”,' /博客/{页< \ d + >} ')- >控制器([BlogController::类,“列表”]);/ /……};
/博客/第一篇博客
路线将匹配和Symfony将使用第一个定义的路线。欧宝娱乐app下载地址为了解决这个问题,添加一些验证{页面}
参数使用需求
选择:- 注释
- 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
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *@Route(“/博客/{页面}”,name = " blog_list "需求={"页面" = " \ d + "}) * /公共函数列表(int美元页面):响应{/ /……}/ * * *@Route(“/博客/{蛞蝓}”,name = " blog_show ") * /公共函数显示(字符串美元鼻涕虫):响应{/ /……}}
1 2 3 4 5 6 7 8 9 10
#配置/ routes.yamlblog_list:路径:页面/博客/ {}控制器:控制器应用\ \ BlogController:列表要求:页面:“\ d +”blog_show:路径:/博客/{蛞蝓}控制器:控制器应用\ \ BlogController::显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“blog_list”路径=“/博客/{页面}”控制器=“应用程序控制器\ \ BlogController:列表”><要求关键=“页面”>\ d +< /要求>< /路线><路线id=“blog_show”路径=“/博客/{蛞蝓}”控制器=“应用程序控制器\ \ BlogController:秀”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/ /配置/ routes.php使用应用程序\控制器\BlogController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“blog_list”,“/博客/{页面}”)- >控制器([BlogController::类,“列表”])- >需求([“页面”= >“\ d +”]);美元路线- >add (“blog_show”,“/博客/{蛞蝓}”)- >控制器([BlogController::类,“显示”]);/ /……};
需求
选项定义了PHP正则表达式这条路必须匹配整个路线匹配参数。在这个例子中,\ d +
是一个正则表达式相匹配的URL | 路线 | 参数 |
---|---|---|
/博客/ 2 |
blog_list |
美元的页面 =2 |
/博客/第一篇博客 |
blog_show |
美元蛞蝓 =第一篇博客 |
提示
路线需求(和路由路径)可以包括容器参数定义复杂的正则表达式,它是有用的在多个线路一旦和重用它们。
提示
参数也支持PCRE Unicode属性的转义序列匹配通用字符类型。例如,陆\ p {}
匹配任何大写字符在任何语言中,希腊\ p {}
匹配任何希腊字符等。
请注意
当使用正则表达式在路由参数,您可以设置use utf8
路线选择真正的
做出任何。
字符匹配任何utf - 8字符而不是单个字节。
{parameter_name <规定>}
。这个特性使得配置更简洁,但它可以减少路由可读性时需求是复杂的:- 注释
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *@Route(“/博客/{页< \ d + >}”, name = " blog_list ") * /公共函数列表(int美元页面):响应{/ /……}}
1 2 3 4
#配置/ routes.yamlblog_list:路径:/博客/{页< \ d + >}控制器:控制器应用\ \ BlogController:列表
1 2 3 4 5 6 7 8 9 10 11 12
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“blog_list”路径=“/博客/{页< \ d + >}”控制器=“应用程序控制器\ \ BlogController:列表”/ >< !——……- - >< /路线>
1 2 3 4 5 6 7 8 9 10
/ /配置/ routes.php使用应用程序\控制器\BlogController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“blog_list”,' /博客/{页< \ d + >} ')- >控制器([BlogController::类,“列表”]);/ /……};
优先级
可选参数可用来让你选择的路线,它是只有当使用注释。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
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *这条路有一个贪婪的模式和定义。* *@Route(“/博客/{蛞蝓}”,name = " blog_show ") * /公共函数显示(字符串美元鼻涕虫){/ /……}/ * * *不能匹配这条路线不定义优先级高于0。* *@Route(name = " /博客/名单”“blog_list”,优先级= 2)* /公共函数列表(){/ /……}}
0
。现在,保持之前的路由配置,但是改变控制器参数的行动。而不是字符串$蛞蝓
,添加BlogPost美元后
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用应用程序\实体\博客;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ /……/ * * *@Route(“/博客/{蛞蝓}”,name = " blog_show ") * /公共函数显示(博客美元帖子):响应{/ /后美元蛞蝓路由参数相匹配的对象/ /……}}
如果你的控制器参数包括类型提示对象(博客
在这种情况下),“param转换器”使数据库请求找到对象使用请求参数(鼻涕虫
在这种情况下)。如果没有找到对象,Symfony自动生成一个4欧宝娱乐app下载地址04响应。
读了完整的参数转换文档欧宝体育电话了解Symfony提供的转换器以及如何配置它们。欧宝娱乐app下载地址
_controller
这个参数是用来确定哪些控制器和执行行动路线相匹配。
-
_format
-
匹配的值用于设置的“请求格式”
请求
对象。这是用于诸如设置内容类型
的响应(如json
格式转换为内容类型
的application / json
)。
-
_fragment
-
用于设置片段标识符,这是可选的最后一个URL的一部分,从一开始
#
性格和用于标识文档的一部分。
-
_locale
-
用于设置语言环境在请求。
(除了可以包含这些属性_fragment
)在个别航线和航线进口。欧宝娱乐app下载地址Symfony定义一些特殊的属性名称相同的(主要强调除外),这样你就可以定义它们容易些:
- 注释
- 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 /控制器/ ArticleController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类ArticleController扩展AbstractController{/ * * *@Route(* " /文章/ {_locale} /搜索。{_format}”,* locale="en", * format="html", * requirements={ * "_locale": "en|fr", * "_format": "html|xml", * } * ) */< /span>公共函数搜索():响应{}}
1 2 3 4 5 6 7 8 9
#配置/ routes.yamlarticle_search:路径:/文章/ {_locale} /搜索。{_format}控制器:控制器应用\ \ ArticleController:搜索地区:在格式:html要求:_locale:在| fr_format:html | xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“article_search”路径=" / / {_locale} /搜索文章。{_format}”控制器=“应用程序控制器\ \ ArticleController:搜索”语言环境=“en”格式=“html”><要求关键=“_locale”>在| fr< /要求><要求关键=“_format”>html | rss< /要求>< /路线>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ /配置/ routes.php名称空间欧宝娱乐app下载地址\组件\路由\加载程序\配置器;使用应用程序\控制器\ArticleController;返回函数(RoutingConfigurator美元路线){美元路线- >add (“article_show”,' / / {_locale} /搜索文章。{_format}’)- >控制器([ArticleController::类,“搜索”])- >语言环境(“en”)- >格式(“html”)- >需求([“_locale”= >“en | fr”,“_format”= >“html | rss”]);};
_format
请求
对象。这是用于诸如设置内容类型
的响应(如json
格式转换为内容类型
的application / json
)。_fragment
#
性格和用于标识文档的一部分。_locale
_fragment
)在个别航线和航线进口。欧宝娱乐app下载地址Symfony定义一些特殊的属性名称相同的(主要强调除外),这样你就可以定义它们容易些:- 注释
- 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 /控制器/ ArticleController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类ArticleController扩展AbstractController{/ * * *@Route(* " /文章/ {_locale} /搜索。{_format}”,* locale="en", * format="html", * requirements={ * "_locale": "en|fr", * "_format": "html|xml", * } * ) */< /span>公共函数搜索():响应{}}
1 2 3 4 5 6 7 8 9
#配置/ routes.yamlarticle_search:路径:/文章/ {_locale} /搜索。{_format}控制器:控制器应用\ \ ArticleController:搜索地区:在格式:html要求:_locale:在| fr_format:html | xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“article_search”路径=" / / {_locale} /搜索文章。{_format}”控制器=“应用程序控制器\ \ ArticleController:搜索”语言环境=“en”格式=“html”><要求关键=“_locale”>在| fr< /要求><要求关键=“_format”>html | rss< /要求>< /路线>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ /配置/ routes.php名称空间欧宝娱乐app下载地址\组件\路由\加载程序\配置器;使用应用程序\控制器\ArticleController;返回函数(RoutingConfigurator美元路线){美元路线- >add (“article_show”,' / / {_locale} /搜索文章。{_format}’)- >控制器([ArticleController::类,“搜索”])- >语言环境(“en”)- >格式(“html”)- >需求([“_locale”= >“en | fr”,“_format”= >“html | rss”]);};
/博客)这就是为什么Symfon欧宝娱乐app下载地址y分享路由配置包括一个功能。
当定义路线作为注释,把常见的配置@Route
控制器类的注释。在其他路由格式,定义常见的配置使用导入时选择路线。
- 注释
- 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
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;/ * * *@Route(" /博客”,要求= {“_locale”:“en | es | fr”}, name = " blog_ ") * /类BlogController扩展AbstractController{/ * * *@Route(name = " / {_locale}”“指数”)* /公共函数指数():响应{/ /……}/ * * *@Route(“/ {_locale} /文章/{蛞蝓}”,name =“秀”)* /公共函数显示(文章美元帖子):响应{/ /……}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#配置/线路/ annotations.yaml控制器:资源:“. . / . . / src /控制器/”类型:注释#这是添加到所有进口路线url的开始前缀:“/博客”#这是添加到所有进口路线名称的开始name_prefix:“blog_”#这些需求被添加到所有进口路线要求:_locale:“en | es | fr”#空着网址导入的路线将成为“/博客/”#取消此选项使URL " /博客”# trailing_slash_on_root:假#装船时你可以排除一些文件/子目录注释#排除:“. . / . . / src /控制器/ {DebugEmailController}。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
< !——配置/线路/注释。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”>< !——“前缀”值添加到开始的所有进口路线url名称前缀的值被添加到所有进口的开始路线名称“排除”选项定义了文件或子目录加载时可以忽略注释- - ><进口资源=“. . / . . / src /控制器/”类型=“注释”前缀=“/博客”名称前缀=“blog_”排除=“. . / . . / src /控制器/ {DebugEmailController}。php”>< !——这些需求被添加到所有进口路线- - ><要求关键=“_locale”>在| | fr< /要求>< /进口>< !进口路线——一个空着的URL将成为“/博客/取消此选项使URL“/博客”- - ><进口资源=“. . / . . / src /控制器/”类型=“注释”前缀=“/博客”trailing-slash-on-root=“假”>< !——……- - >< /进口>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/ /配置/线路/ annotations.php使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){/ /使用进口的可选的四参数()来排除一些文件/ /或子目录装载注释美元路线- >导入(“. . / . . / src /控制器/”,“注释”)/ /这是添加到所有进口路线url的开始- >前缀(“/博客”)/ /导入空着URL路由将成为“/博客/”/ /将假作为第二个参数传递给使URL " /博客”/ / - >前缀(/博客,假)/ /这是添加到所有进口路线名称的开始- >namePrefix (“blog_”)/ /这些需求被添加到所有进口路线- >需求([“_locale”= >“en | es | fr”]);};
在这个例子中,的路线index ()
行动将被称为blog_index
和它的URL/博客/
。的路线显示()
行动将被称为blog_show
和它的URL/博客/ {_locale} /文章/{蛞蝓}
。两个路线也将验证_locale
类中定义的参数匹配正则表达式注释。
另请参阅
欧宝娱乐app下载地址Symfony可以从不同来源进口航线装载机,你甚至可以创建自己的路线。
@Route
控制器类的注释。在其他路由格式,定义常见的配置使用导入时选择路线。- 注释
- 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
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;/ * * *@Route(" /博客”,要求= {“_locale”:“en | es | fr”}, name = " blog_ ") * /类BlogController扩展AbstractController{/ * * *@Route(name = " / {_locale}”“指数”)* /公共函数指数():响应{/ /……}/ * * *@Route(“/ {_locale} /文章/{蛞蝓}”,name =“秀”)* /公共函数显示(文章美元帖子):响应{/ /……}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#配置/线路/ annotations.yaml控制器:资源:“. . / . . / src /控制器/”类型:注释#这是添加到所有进口路线url的开始前缀:“/博客”#这是添加到所有进口路线名称的开始name_prefix:“blog_”#这些需求被添加到所有进口路线要求:_locale:“en | es | fr”#空着网址导入的路线将成为“/博客/”#取消此选项使URL " /博客”# trailing_slash_on_root:假#装船时你可以排除一些文件/子目录注释#排除:“. . / . . / src /控制器/ {DebugEmailController}。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
< !——配置/线路/注释。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”>< !——“前缀”值添加到开始的所有进口路线url名称前缀的值被添加到所有进口的开始路线名称“排除”选项定义了文件或子目录加载时可以忽略注释- - ><进口资源=“. . / . . / src /控制器/”类型=“注释”前缀=“/博客”名称前缀=“blog_”排除=“. . / . . / src /控制器/ {DebugEmailController}。php”>< !——这些需求被添加到所有进口路线- - ><要求关键=“_locale”>在| | fr< /要求>< /进口>< !进口路线——一个空着的URL将成为“/博客/取消此选项使URL“/博客”- - ><进口资源=“. . / . . / src /控制器/”类型=“注释”前缀=“/博客”trailing-slash-on-root=“假”>< !——……- - >< /进口>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/ /配置/线路/ annotations.php使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){/ /使用进口的可选的四参数()来排除一些文件/ /或子目录装载注释美元路线- >导入(“. . / . . / src /控制器/”,“注释”)/ /这是添加到所有进口路线url的开始- >前缀(“/博客”)/ /导入空着URL路由将成为“/博客/”/ /将假作为第二个参数传递给使URL " /博客”/ / - >前缀(/博客,假)/ /这是添加到所有进口路线名称的开始- >namePrefix (“blog_”)/ /这些需求被添加到所有进口路线- >需求([“_locale”= >“en | es | fr”]);};
index ()
行动将被称为blog_index
和它的URL/博客/
。的路线显示()
行动将被称为blog_show
和它的URL/博客/ {_locale} /文章/{蛞蝓}
。两个路线也将验证_locale
类中定义的参数匹配正则表达式注释。另请参阅
欧宝娱乐app下载地址Symfony可以从不同来源进口航线装载机,你甚至可以创建自己的路线。
请求Symfony创建的对象存储的所有路欧宝娱乐app下载地址由配置(如名称和参数)的“请求属性”。你可以得到这个信息在控制器通过请求
对象:
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 /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *@Route(name = " /博客”“blog_list”) * /公共函数列表(请求美元请求):响应{美元routeName=美元请求- >属性- >get (“_route”);美元routeParameters=美元请求- >属性- >get (“_route_params”);/ /使用这个来获得所有可用的属性(不仅路由的):美元allAttributes=美元请求- >属性- >所有();/ /……}}
你可以得到这个信息在服务注入request_stack
服务在一个服务请求对象。在模板,使用树枝全局应用程序变量得到请求及其属性:
1 2 3 4 5
{%集route_name = app.request.attributes.get (_route) %}{%集route_parameters = app.request.attributes.get (_route_params) %}{#用它来获取所有可用的属性(不仅路由的)#}{%集all_attributes = app.request.attributes。所有%}
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 /控制器/ BlogController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类BlogController扩展AbstractController{/ * * *@Route(name = " /博客”“blog_list”) * /公共函数列表(请求美元请求):响应{美元routeName=美元请求- >属性- >get (“_route”);美元routeParameters=美元请求- >属性- >get (“_route_params”);/ /使用这个来获得所有可用的属性(不仅路由的):美元allAttributes=美元请求- >属性- >所有();/ /……}}
request_stack
服务在一个服务请求对象。在模板,使用树枝全局应用程序变量得到请求及其属性:1 2 3 4 5
{%集route_name = app.request.attributes.get (_route) %}{%集route_parameters = app.request.attributes.get (_route_params) %}{#用它来获取所有可用的属性(不仅路由的)#}{%集all_attributes = app.request.attributes。所有%}
RedirectController重定向到其他路线,网址:
- 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
#配置/ routes.yamldoc_shortcut:路径:/医生控制器:欧宝娱乐app下载地址Symfony \包\ FrameworkBundle \ \ RedirectController控制器默认值:路线:“doc_page”#选择您可以定义一些参数传递到路线页面:“指数”版本:“当前”#重定向是暂时默认(代码302),但是你可以让他们永久(代码301)永久的:真正的#添加这个重定向时保持原来的查询字符串参数keepQueryParams:真正的#添加这个重定向时保持HTTP方法。重定向的状态变化# *临时重定向,它使用了307状态码,而不是302# *永久重定向,它使用了308状态码,而不是301keepRequestMethod:真正的legacy_doc:路径:/遗留/医生控制器:欧宝娱乐app下载地址Symfony \包\ FrameworkBundle \ \ RedirectController控制器默认值:#这个值可以是绝对路径或绝对URL路径:“https://legacy.example.com/doc”永久的:真正的
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 31
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“doc_shortcut”路径=“/ doc”控制器=“欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController”><默认的关键=“路线”>doc_page< /默认的>< !——选择你可以定义一些参数传递到路径- - ><默认的关键=“页面”>指数< /默认的><默认的关键=“版本”>当前的< /默认的>< !——重定向是暂时默认(代码302),但是你可以让他们永久(代码301)- - ><默认的关键=“永久”>真正的< /默认的>< !——添加这个重定向时保持原来的查询字符串参数- - ><默认的关键=“keepQueryParams”>真正的< /默认的>< !——添加这个重定向时保持HTTP方法。重定向状态变化:*为临时重定向,它使用的302 * 307状态代码而不是永久重定向,它使用了308状态码,而不是301 - - ><默认的关键=“keepRequestMethod”>真正的< /默认的>< /路线><路线id=“legacy_doc”路径=“遗产/ doc”控制器=“欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController”>< !,这个值可以是一个绝对路径或绝对URL - - ><默认的关键=“路径”>https://legacy.example.com/doc< /默认的>< !——重定向是暂时默认(代码302),但是你可以让他们永久(代码301)- - ><默认的关键=“永久”>真正的< /默认的>< /路线>< /路线>
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 31 32 33 34
/ /配置/ routes.php使用应用程序\控制器\DefaultController;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\RedirectController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“doc_shortcut”,' / doc ')- >控制器(RedirectController::类)- >违约([“路线”= >“doc_page”,/ /选择您可以定义一些参数传递到路线“页面”= >“指数”,“版本”= >“当前”,/ /重定向是暂时默认(代码302),但是你可以让他们永久(代码301)“永久”= >真正的,/ /添加这个重定向时保持原来的查询字符串参数“keepQueryParams”= >真正的,/ /添加这个重定向时保持HTTP方法。重定向状态变化:/ / *临时重定向,它使用了307状态码,而不是302/ / *永久重定向,它使用了308状态码,而不是301“keepRequestMethod”= >真正的]);美元路线- >add (“legacy_doc”,“遗产/ doc”)- >控制器(RedirectController::类)- >违约([/ /这个值可以是一个绝对路径或绝对URL“路径”= >“https://legacy.example.com/doc”,/ /重定向是暂时默认(代码302),但是你可以让他们永久(代码301)“永久”= >真正的]);};
提示
欧宝娱乐app下载地址Symfony还提供了一些实用程序重定向内部控制器
- 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
#配置/ routes.yamldoc_shortcut:路径:/医生控制器:欧宝娱乐app下载地址Symfony \包\ FrameworkBundle \ \ RedirectController控制器默认值:路线:“doc_page”#选择您可以定义一些参数传递到路线页面:“指数”版本:“当前”#重定向是暂时默认(代码302),但是你可以让他们永久(代码301)永久的:真正的#添加这个重定向时保持原来的查询字符串参数keepQueryParams:真正的#添加这个重定向时保持HTTP方法。重定向的状态变化# *临时重定向,它使用了307状态码,而不是302# *永久重定向,它使用了308状态码,而不是301keepRequestMethod:真正的legacy_doc:路径:/遗留/医生控制器:欧宝娱乐app下载地址Symfony \包\ FrameworkBundle \ \ RedirectController控制器默认值:#这个值可以是绝对路径或绝对URL路径:“https://legacy.example.com/doc”永久的:真正的
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 31
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“doc_shortcut”路径=“/ doc”控制器=“欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController”><默认的关键=“路线”>doc_page< /默认的>< !——选择你可以定义一些参数传递到路径- - ><默认的关键=“页面”>指数< /默认的><默认的关键=“版本”>当前的< /默认的>< !——重定向是暂时默认(代码302),但是你可以让他们永久(代码301)- - ><默认的关键=“永久”>真正的< /默认的>< !——添加这个重定向时保持原来的查询字符串参数- - ><默认的关键=“keepQueryParams”>真正的< /默认的>< !——添加这个重定向时保持HTTP方法。重定向状态变化:*为临时重定向,它使用的302 * 307状态代码而不是永久重定向,它使用了308状态码,而不是301 - - ><默认的关键=“keepRequestMethod”>真正的< /默认的>< /路线><路线id=“legacy_doc”路径=“遗产/ doc”控制器=“欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController”>< !,这个值可以是一个绝对路径或绝对URL - - ><默认的关键=“路径”>https://legacy.example.com/doc< /默认的>< !——重定向是暂时默认(代码302),但是你可以让他们永久(代码301)- - ><默认的关键=“永久”>真正的< /默认的>< /路线>< /路线>
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 31 32 33 34
/ /配置/ routes.php使用应用程序\控制器\DefaultController;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\RedirectController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“doc_shortcut”,' / doc ')- >控制器(RedirectController::类)- >违约([“路线”= >“doc_page”,/ /选择您可以定义一些参数传递到路线“页面”= >“指数”,“版本”= >“当前”,/ /重定向是暂时默认(代码302),但是你可以让他们永久(代码301)“永久”= >真正的,/ /添加这个重定向时保持原来的查询字符串参数“keepQueryParams”= >真正的,/ /添加这个重定向时保持HTTP方法。重定向状态变化:/ / *临时重定向,它使用了307状态码,而不是302/ / *永久重定向,它使用了308状态码,而不是301“keepRequestMethod”= >真正的]);美元路线- >add (“legacy_doc”,“遗产/ doc”)- >控制器(RedirectController::类)- >违约([/ /这个值可以是一个绝对路径或绝对URL“路径”= >“https://legacy.example.com/doc”,/ /重定向是暂时默认(代码302),但是你可以让他们永久(代码301)“永久”= >真正的]);};
提示
欧宝娱乐app下载地址Symfony还提供了一些实用程序重定向内部控制器
主机选择要求传入请求的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日25
/ / src /控制器/ MainController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类MainController扩展AbstractController{/ * * *@Route(" name =“mobile_homepage”,主机= " m.example.com ") * /公共函数mobileHomepage():响应{/ /……}/ * * *@Route(" name = "主页")* /公共函数主页():响应{/ /……}}
1 2 3 4 5 6 7 8 9
#配置/ routes.yamlmobile_homepage:路径:/主持人:m.example.com控制器:应用程序控制器\ \ MainController:: mobileHomepage主页:路径:/控制器:控制器应用\ \ MainController::主页
1 2 3 4 5 6 7 8 9 10 11 12 13 14
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“mobile_homepage”路径=“/”主机=“m.example.com”控制器=“应用程序控制器\ \ MainController: mobileHomepage”/ ><路线id=“主页”路径=“/”控制器=“应用程序控制器\ \ MainController:主页”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13
/ /配置/ routes.php使用应用程序\控制器\MainController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“mobile_homepage”,' / ')- >控制器([MainController::类,“mobileHomepage”])- >主机(“m.example.com”);美元路线- >add (“主页”,' / ')- >控制器([MainController::类,“主页”]);};
的值主机
选项包括参数(这是有用的在多租户应用程序),这些参数也可以验证需求
:
- 注释
- 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 31
/ / src /控制器/ MainController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类MainController扩展AbstractController{/ * * *@Route(* " / ",* name = " mobile_homepage ", *主机=“.example.com{子域名}”,*缺省值={“子域名”=“m”}, *需求={“子域名”=“m |移动”}*)* /公共函数mobileHomepage():响应{/ /……}/ * * *@Route(" name = "主页")* /公共函数主页():响应{/ /……}}
1 2 3 4 5 6 7 8 9 10 11 12 13
#配置/ routes.yamlmobile_homepage:路径:/主持人:“.example.com{子域名}”控制器:应用程序控制器\ \ MainController:: mobileHomepage默认值:子域名:米要求:子域名:m |移动主页:路径:/控制器:控制器应用\ \ MainController::主页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“mobile_homepage”路径=“/”主机=“.example.com{子域名}”控制器=“应用程序控制器\ \ MainController: mobileHomepage”><默认的关键=“子域名”>米< /默认的><要求关键=“子域名”>m |移动< /要求>< /路线><路线id=“主页”路径=“/”控制器=“应用程序控制器\ \ MainController:主页”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/ /配置/ routes.php使用应用程序\控制器\MainController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“mobile_homepage”,' / ')- >控制器([MainController::类,“mobileHomepage”])- >主机(“.example.com{子域名}”)- >违约([“子域名”= >“米”,)- >需求([“子域名”= >“m |移动”]);美元路线- >add (“主页”,' / ')- >控制器([MainController::类,“主页”]);};
在上面的例子中,子域名
参数定义了一个默认值,否则你需要包括一个域值每次生成一个URL使用这些路线。
提示
你也可以设置主机
选择的时候进口航线让所有人要求主机名。
请注意
使用子域路由时,你必须设置主机
HTTP头信息功能测试或线路不匹配:
1 2 3 4 5 6 7 8 9
美元履带=美元客户端- >请求(“得到”,' / '[][],[“HTTP_HOST”= >“m.example.com”]/ /或得到一些容器参数的值:/ / [' HTTP_HOST ' = > ' m。”。$客户- > getContainer () - > getParameter(域)]);
- 注释
- 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
/ / src /控制器/ MainController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类MainController扩展AbstractController{/ * * *@Route(" name =“mobile_homepage”,主机= " m.example.com ") * /公共函数mobileHomepage():响应{/ /……}/ * * *@Route(" name = "主页")* /公共函数主页():响应{/ /……}}
1 2 3 4 5 6 7 8 9
#配置/ routes.yamlmobile_homepage:路径:/主持人:m.example.com控制器:应用程序控制器\ \ MainController:: mobileHomepage主页:路径:/控制器:控制器应用\ \ MainController::主页
1 2 3 4 5 6 7 8 9 10 11 12 13 14
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“mobile_homepage”路径=“/”主机=“m.example.com”控制器=“应用程序控制器\ \ MainController: mobileHomepage”/ ><路线id=“主页”路径=“/”控制器=“应用程序控制器\ \ MainController:主页”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13
/ /配置/ routes.php使用应用程序\控制器\MainController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“mobile_homepage”,' / ')- >控制器([MainController::类,“mobileHomepage”])- >主机(“m.example.com”);美元路线- >add (“主页”,' / ')- >控制器([MainController::类,“主页”]);};
主机
选项包括参数(这是有用的在多租户应用程序),这些参数也可以验证需求
:- 注释
- 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 31
/ / src /控制器/ MainController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类MainController扩展AbstractController{/ * * *@Route(* " / ",* name = " mobile_homepage ", *主机=“.example.com{子域名}”,*缺省值={“子域名”=“m”}, *需求={“子域名”=“m |移动”}*)* /公共函数mobileHomepage():响应{/ /……}/ * * *@Route(" name = "主页")* /公共函数主页():响应{/ /……}}
1 2 3 4 5 6 7 8 9 10 11 12 13
#配置/ routes.yamlmobile_homepage:路径:/主持人:“.example.com{子域名}”控制器:应用程序控制器\ \ MainController:: mobileHomepage默认值:子域名:米要求:子域名:m |移动主页:路径:/控制器:控制器应用\ \ MainController::主页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“mobile_homepage”路径=“/”主机=“.example.com{子域名}”控制器=“应用程序控制器\ \ MainController: mobileHomepage”><默认的关键=“子域名”>米< /默认的><要求关键=“子域名”>m |移动< /要求>< /路线><路线id=“主页”路径=“/”控制器=“应用程序控制器\ \ MainController:主页”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/ /配置/ routes.php使用应用程序\控制器\MainController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“mobile_homepage”,' / ')- >控制器([MainController::类,“mobileHomepage”])- >主机(“.example.com{子域名}”)- >违约([“子域名”= >“米”,)- >需求([“子域名”= >“m |移动”]);美元路线- >add (“主页”,' / ')- >控制器([MainController::类,“主页”]);};
子域名
参数定义了一个默认值,否则你需要包括一个域值每次生成一个URL使用这些路线。提示
你也可以设置主机
选择的时候进口航线让所有人要求主机名。
请注意
使用子域路由时,你必须设置主机
HTTP头信息功能测试或线路不匹配:
1 2 3 4 5 6 7 8 9
美元履带=美元客户端- >请求(“得到”,' / '[][],[“HTTP_HOST”= >“m.example.com”]/ /或得到一些容器参数的值:/ / [' HTTP_HOST ' = > ' m。”。$客户- > getContainer () - > getParameter(域)]);
翻译语言环境。这样就避免了需要复制路线,也减少了潜在的缺陷:
- 注释
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/ / src /控制器/ CompanyController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类CompanyController扩展AbstractController{/ * * *@Route({*“en”:“/关于我们”*“问”:“/ over-ons”*}, name = " about_us ") * /公共函数关于():响应{/ /……}}
1 2 3 4 5 6
#配置/ routes.yamlabout_us:路径:en:/关于我们问:/ over-ons控制器:应用程序控制器\ \ CompanyController::
1 2 3 4 5 6 7 8 9 10 11 12
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“about_us”控制器=“应用程序控制器\ \ CompanyController::“><路径语言环境=“en”>/关于我们< /路径><路径语言环境=“问”>/ over-ons< /路径>< /路线>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12
/ /配置/ routes.php使用应用程序\控制器\CompanyController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“about_us”,(“en”= >' /关于我们',“问”= >' / over-ons ',)- >控制器([CompanyController::类,“大约”]);};
- 注释
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/ / src /控制器/ CompanyController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类CompanyController扩展AbstractController{/ * * *@Route({*“en”:“/关于我们”*“问”:“/ over-ons”*}, name = " about_us ") * /公共函数关于():响应{/ /……}}
1 2 3 4 5 6
#配置/ routes.yamlabout_us:路径:en:/关于我们问:/ over-ons控制器:应用程序控制器\ \ CompanyController::
1 2 3 4 5 6 7 8 9 10 11 12
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“about_us”控制器=“应用程序控制器\ \ CompanyController::“><路径语言环境=“en”>/关于我们< /路径><路径语言环境=“问”>/ over-ons< /路径>< /路线>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12
/ /配置/ routes.php使用应用程序\控制器\CompanyController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“about_us”,(“en”= >' /关于我们',“问”= >' / over-ons ',)- >控制器([CompanyController::类,“大约”]);};
当局部路由匹配,Symfony自动使用相同的语言环境在整个请求。欧宝娱乐app下载地址
提示
当应用程序使用完整的“语言+领土”地区(如。fr_FR
,fr_BE
),如果所有相关的url是相同的地区,路线只能使用语言的部分(如。fr
),以避免重复相同的url。
国际化了的应用程序的一个常见需求是前缀与一个地区所有航线。可以通过定义一个不同的前缀为每个地区(和设置一个空前缀为默认语言环境如果你喜欢它):
- YAML
- XML
- PHP
1 2 3 4 5 6 7
#配置/线路/ annotations.yaml控制器:资源:“. . / . . / src /控制器/”类型:注释前缀:en:”#不要url前缀(英文),默认语言环境问:' /问'
1 2 3 4 5 6 7 8 9 10 11 12 13
< !——配置/线路/注释。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><进口资源=“. . / . . / src /控制器/”类型=“注释”>< !——不要为英语前缀的url,默认区域设置- - ><前缀语言环境=“en”>< /前缀><前缀语言环境=“问”>/问< /前缀>< /进口>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12
/ /配置/线路/ annotations.php使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >导入(“. . / . . / src /控制器/”,“注释”)- >前缀([/ /不为英语,url前缀默认语言环境“en”= >”,“问”= >' /问']);};
有时,当HTTP响应应该缓存的,重要的是要确保能发生。然而,每当会话中启动请求,Symfony的反应变成一个私人停机的回应。欧宝娱乐app下载地址
有关详细信息,请参见HTTP缓存。
路线可以配置一个无状态的
布尔选项来宣布会议时不应该使用匹配请求:
- 注释
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ / src /控制器/ MainController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;类MainController扩展AbstractController{/ * * *@Route(" name =“主页”,无状态= true) * /公共函数主页(){/ /……}}
1 2 3 4 5
#配置/ routes.yaml主页:控制器:控制器应用\ \ MainController::主页路径:/无状态:真正的
1 2 3 4 5 6 7 8
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”><路线id=“主页”控制器=“应用程序控制器\ \ MainController:主页”路径=“/”无状态的=“真正的”/ >< /路线>
1 2 3 4 5 6 7 8 9 10
/ /配置/ routes.php使用应用程序\控制器\MainController;使用欧宝娱乐app下载地址\包\FrameworkBundle\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >add (“主页”,' / ')- >控制器([MainController::类,“主页”])- >无状态();};
现在,如果使用会话,应用程序将根据您的报告kernel.debug
参数:启用
:将抛出一个UnexpectedSessionUsageException异常禁用
:将记录一个警告
它将帮助你理解和希望解决意想不到的应用程序行为。