如何在路由中使用服务容器参数

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.1,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

如何在路由中使用服务容器参数

有时你可能会发现让你的路由的某些部分全局可配置是很有用的。例如,如果您构建一个国际化的站点,您可能会从一个或两个地区开始。当然,您将在路由中添加一个需求,以防止用户匹配您支持的语言环境以外的语言环境。

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

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
# app / config / routing.yml联系人:路径:/ {_locale} /接触默认值:_controller:AppBundle:主要:接触要求:_locale:“% app.locales %”

属性现在可以控制和设置app.locales参数:

  • YAML
  • XML
  • PHP
1 2 3
# app / config / config.yml参数:app.locales:在|西文

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

  • YAML
  • XML
  • PHP
1 2 3 4
# app / config / routing.ymlsome_route:路径:/ % app.route_prefix % /接触默认值:_controller:AppBundle:主要:接触

请注意

就像在正常的服务容器配置文件中一样,如果您确实需要在你的路由中,你可以通过加倍来转义百分号,例如:/ - 50% %,这将解决/分数- 50%

然而,由于包含在任何URL中的字符都是自动编码的,此示例的结果URL将是/获得50 % 25% 25编码的结果是字符)。

另请参阅

有关依赖注入类中的参数处理,请参阅在依赖注入类中使用参数

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。