如何使用服务容器参数在你的路线吗

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.2,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

如何使用服务容器参数在你的路线吗

有时候你可能会觉得它有用让部分全球航线可配置的。例如,如果您构建一个国际化的网站,你可能会从一个或两个地方开始。肯定你会添加一个要求你的路线,以防止一个用户匹配一个地区以外的地区支持。

可以硬编码你的_locale要求所有的路线,但是一个更好的解决方案是使用一个可配置的服务容器参数正确的在你的路由配置:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/ / src /控制器/ MainController.php名称空间应用程序\控制器;使用欧宝娱乐app下载地址\\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\路由\注释\路线;MainController扩展AbstractController{/ * * *@Route(“/ {_locale} /接触”,name =“接触”,要求= {*“_locale”=“%应用。地区%”*})* /公共函数联系(){/ /……}}

你现在可以控制和设置app.locales参数在你的容器:

  • YAML
  • XML
  • PHP
1 2 3
#配置/ services.yaml参数:app.locales:在|西文

你也可以用一个参数来定义你的路由路径(或路径的一部分):

  • 注释
  • 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(" / %应用。路线_prefix%/contact", name="contact") */< /span>公共函数联系(){/ /……}}

现在确保app.route_prefix参数设置在你的容器:

  • YAML
  • XML
  • PHP
1 2 3
#配置/ services.yaml参数:app.route_prefix:“foo”

请注意

就像在正常服务容器配置文件,如果你真的需要一个%在你的路线,你可以逃避百分号增加一倍,如/ - 50% %,这将解决/分数- 50%

然而,随着%字符中包含任何URL自动编码,本例的生成的URL/获得50 % 25(% 25编码的结果吗%字符)。

另请参阅

在依赖注入参数处理类使用依赖注入的类内参数

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。