如何包含外部路由资源
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.2,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
如何包含外部路由资源
简单的应用程序可以定义所有的路线——通常在一个配置文件配置/ routes.yaml
(见路由)。然而,在大多数应用程序中是很常见的导入路径定义从不同资源:PHP控制器文件中的注释,YAML、XML或PHP文件存储在一些目录,等等。
这可以通过导入路由资源从主要的路由文件:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#配置/ routes.yamlapp_file:#负载线路从给定的路由文件存储在一些包资源:“@AcmeBundle /资源/ config / routing.yaml”app_annotations:#从PHP装载路线注释的控制器在该目录中找到资源:“. . / src /控制器/”类型:注释app_directory:#从YAML装载路线,XML或PHP文件在该目录中找到资源:“遗留/路由/ . . /”类型:目录app_bundle:#从YAML装载路线,XML或PHP文件中发现一些包目录中资源:“@AcmeOtherBundle /资源/ config /路由/”类型:目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
< !——配置/路线。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”>< !——从给定的加载路径路由文件存储在一些包- - ><进口资源=“@AcmeBundle /资源/ config / routing.yaml”/ >< !——从PHP装载路线注释的控制器中发现该目录- - ><进口资源=“. . / src /控制器/”类型=“注释”/ >< !——从YAML装载路线或XML文件中找到该目录- - ><进口资源=“遗留/路由/ . . /”类型=“目录”/ >< !——从YAML装载路线或XML文件中发现一些包目录- - ><进口资源=“@AcmeOtherBundle /资源/ config /路由/”类型=“目录”/ >< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ /配置/ routes.php使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){/ /加载路线从给定的路由文件存储在一些包美元路线- >导入(“@AcmeBundle /资源/ config / routing.yaml”);/ /加载路线从PHP注释的控制器在该目录中找到美元路线- >导入(“. . / src /控制器/”,“注释”);/ /加载路线从YAML或XML文件在该目录中找到美元路线- >导入(“遗留/路由/ . . /”,“目录”);/ /加载路径的YAML或XML文件中发现的一些包目录中美元路线- >导入(“@AcmeOtherBundle /资源/ config /路由/”,“目录”);};
请注意
当进口资源,(如的关键。app_file
)是集合的名称。确保它独特的每个文件所以没有其他线路覆盖它。
进口航线的url添加前缀
你也可以选择提供一个“前缀”进口路线。例如,所有应用程序路由前缀/网站
(如。/网站/博客/{蛞蝓}
而不是/博客/{蛞蝓}
):
- 注释
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9
使用欧宝娱乐app下载地址\组件\路由\注释\路线;/ * * *@Route网站(“/”)* /类DefaultController{/ /……}
1 2 3 4 5
#配置/ routes.yaml控制器:资源:“. . / src /控制器/”类型:注释前缀:/网站
1 2 3 4 5 6 7 8 9
< !——配置/路线。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 /控制器/”类型=“注释”前缀=“/网站”/ >< /路线>
1 2 3 4 5 6 7 8
/ /配置/ routes.php使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >导入(“. . / src /控制器/”,“注释”)- >前缀(“/网站”);};
每个路由的路径被加载的新的路由资源现在将与字符串的前缀/网站
。
请注意
如果任何前缀路线定义一个空路径,Symfony末尾添加一个斜杠。欧宝娱乐app下载地址在前面的例子中,一个空路径前缀/网站
将导致/网站/
URL。如果你想避免这种行为,设置trailing_slash_on_root
选项假
:
- YAML
- XML
- PHP
1 2 3 4 5 6
#配置/ routes.yaml控制器:资源:“. . / src /控制器/”类型:注释前缀:/网站trailing_slash_on_root:假
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”><进口资源=“. . / src /控制器/”类型=“注释”前缀=“/网站”trailing-slash-on-root=“假”/ >< /路线>
1 2 3 4 5 6 7 8 9
/ /配置/ routes.php使用应用程序\控制器\ArticleController;使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >导入(“. . / src /控制器/”,“注释”)- >前缀(“/网站”,假);};
前缀的名字进口路线
你也有可能前缀的名称中定义的所有线路控制器类或从一个配置文件导入:
- 注释
- 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日
使用欧宝娱乐app下载地址\组件\路由\注释\路线;/ * * *@Route(name = " blog_ ") * /类BlogController{/ * * *@Route(name = " /博客”“指数”)* /公共函数指数(){/ /……}/ * * *@Route(“/博客/文章/{蛞蝓}”,name =“post”) * /公共函数显示(文章美元帖子){/ /……}}
1 2 3 4 5
#配置/ routes.yaml控制器:资源:“. . / src /控制器/”类型:注释name_prefix:“blog_”
1 2 3 4 5 6 7 8 9 10 11
< !——配置/路线。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 /控制器/”类型=“注释”名称前缀=“blog_”/ >< /路线>
1 2 3 4 5 6 7 8
/ /配置/ routes.php使用欧宝娱乐app下载地址\组件\路由\加载程序\配置器\RoutingConfigurator;返回函数(RoutingConfigurator美元路线){美元路线- >导入(“. . / src /控制器/”,“注释”)- >namePrefix (“blog_”);};
在这个例子中,航线的名称blog_index
和blog_post
。
添加一个主机要求进口的路线
你可以设置主机正则表达式对进口路线。有关更多信息,请参见如何匹配基于主机的路由。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。