繁体   English   中英

Symfony2主机URL转换

[英]Symfony2 host url translation

我是Symfony2的新手(使用2.7,因为它是现有项目)。 我必须使用URL的主机名中的语言环境为网站创建翻译后的URL。

为了更清楚,我将以这些示例为例:

en.mywebsite.com/hello (美国/英语版)或fr.mywebsite.com/bonjour (法语)

我有我的routing.yml文件,但是它当然不起作用。

helloRoute:
   host: "{locale}.mywebsite.com"
   path: I don't know the correct input, it can be "/hello" or "/bonjour"
   defaults: {_controller: MyWebSiteBundle:Front:viewHello}
   requirements:
      locale: fr|en

有我的Nginx配置:

server {
   listen                               80;
   server_name                          ~^(?<region>\.|en|fr)\.\mywebsite.com;
    root                                /Applications/MAMP/htdocs/web/web;

    rewrite                             ^/app_dev\.php/?(.*)$ /$1 permanent;

    location / {
        index                           app_dev.php;
        try_files                       $uri @rewriteapp;
    }
    ...
}

这个Nginx配置没问题,那行得通。

我检查了很多文档,但是我不能这样做。 Symfony文档对此并不十分详细。

我需要根据主机名的语言环境翻译URL。 Symfony可能无法实现。

先感谢您。

我将创建两条路线:

对于英语

helloRoute:
   host: "{_locale}.mywebsite.com"
   path: "/hello"
   defaults: {_controller: MyWebSiteBundle:Front:viewHello}
   requirements:
      locale: en

对于法语

bonjourRoute:
   host: "{_locale}.mywebsite.com"
   path: "/bonjour"
   defaults: {_controller: MyWebSiteBundle:Front:viewHello}
   requirements:
      locale: fr

*请注意,您在locale变量中使用了下划线。

您可以将两条路由发送到同一控制器,并根据语言环境有条件地显示。

更一般而言,为了能够使用Symfony 2轻松处理URL中的国际化,可以使用BeSimple / BeSimpleI18nRoutingBundle

然后,如示例所示,您可以执行以下操作:

helloRoute:
   host: "{locale}.mywebsite.com"
   locales:  { en: "/hello", fr: "/bonjour" }
   defaults: {_controller: MyWebSiteBundle:Front:viewHello}
   requirements:
      locale: fr|en

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM