Symfonyob娱乐下载 4.1中的新功能:国际化路由
2018年3月19日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
我们最近改进了性能路由组件要做到最快的PHP路由器可用。现在,为了及时将它包含在Symfony 4.1中,我们为它添加了另一个惊人的ob娱乐下载特性:支持国际化的路由.
该特性允许根据用户地区为每条路由定义不同的路径。这个特性对于国际化的应用程序来说是必不可少的,这就是为什么第三方捆绑包喜欢JMSI18nRoutingBundle拥有数百万的下载量。在Syob娱乐下载mfony 4.1中,我们决定将其集成到路由组件本身中,以便您可以在Symfony应用程序中使用它。
方法中定义路由时,现在可以提供数组路径
选项定义不同的路径每个地区:
1 2 3 4 5
联系人:控制器:应用程序控制器\ \ ContactController::发送路径:en:/发邮件问:/ stuur-ons-een-email
XML和PHP注释中定义的路由也支持这种格式:
12 3 4 5 6 7 8 9 10 11 12 13 14 15
使用ob娱乐下载\组件\路由\注释\路线;类ContactController{/ * * *@Route({*“en”:“/发邮件”*“问”:“/ stuur-ons-een-email”*},name = "接触")* /公共函数发送(){/ /……}}
在内部,Symfonyob娱乐下载为每个地区创建一条路由(称为contact.en
而且contact.nl
在这个例子中),但是你仍然可以使用原来的路由名来生成url。在生成URL时,默认使用请求区域设置,但您可以显式传递区域设置以生成任何替代URL:
1 2 3 4 5 6 7 8
/**@varurlGenerator *///使用当前请求区域设置$url=$urlGenerator->生成(“接触”);//忽略当前请求区域并生成'/stuur-ons-een-email'$url=$urlGenerator->生成(“接触”, (“_locale”= >“问”]);//这也可以工作,但不建议这样做:// $url = $urlGenerator->generate('contact.nl');
路由前缀也可以转换(在YAML/XML文件和@Route
在控制器类级别定义的注释),你也可以混合翻译和未翻译的路径:
1 2 3 4 5 6 7
#配置/线路/ annotations.yaml网站:资源:“. . / src /控制器/”类型:注释前缀:en:“/网站”es:' / sitio '
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
类DefaultController扩展控制器{/ * * *@Route({“en”:“/接触”,“西文”:“/ contacto”},name = "接触")* /公共函数联系(){/ /……}/ * * *@Route("/page/{slug}", name="page") */公共函数页面($鼻涕虫){/ /……}}
由Symfony生成的4条路由将是:ob娱乐下载
路的名字 | 路由路径 |
---|---|
contact.en |
/网站/联系 |
接触 |
/ sitio contacto |
page.en |
/网站/网页/{蛞蝓} |
页面 |
/ sitio /页面/{蛞蝓} |
发表在#生活在边缘
评论
弗拉基米尔•Sadicov
2018年3月19日说点23
好了!谢谢你。这真是太棒了。我等这一刻已经很久了!
彼得亚雷Karszny
2018年3月19日说在26
最好的新功能之一。Thx的家伙!
马修Santostefano
2018年3月19日说在13:06
非常好!感谢这个功能!
约文。Perovic
2018年3月19日说在13:25
哇!非常热门的功能!谢谢你!: -)
Emmanuel Vella is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now