【问题标题】:Make route available in two languages with Zend Framework使用 Zend Framework 提供两种语言的路由
【发布时间】:2012-09-17 15:12:04
【问题描述】:

我正在将 PHP 应用程序从“自己的”“框架”移植到 Zend Framework (1.11.11) 以及 Doctrine2。这一切都很顺利,除了该应用程序有两种语言版本,荷兰语和德语。我正在寻找一种使两个 URL 可访问的方法:

我用 Regex 路由尝试了这个,但它并不好,因为现在组装时必须始终给出“page”参数:

resources.router.routes.viewreviews.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.viewreviews.route = "(klantbeoordelingen|kundenbewertung)[/]?([0-9]*)"
resources.router.routes.viewreviews.reverse = "%s/%d"
resources.router.routes.viewreviews.defaults.module = "default"
resources.router.routes.viewreviews.defaults.controller = "review"
resources.router.routes.viewreviews.defaults.action = "index"
resources.router.routes.viewreviews.map.name = 1
resources.router.routes.viewreviews.map.page = 2

关键是我应该允许现在不可能的页面参数。我可以制作两条正则表达式路线,但这不是一个好方法。因为我会得到很多看起来几乎一样的路线。

我想我不是在寻找链式路由,因为 URL 中不包含该语言。语言由您访问的域名(.nl 或 .de)定义。

有什么想法吗?提示?

【问题讨论】:

    标签: zend-framework routing


    【解决方案1】:

    经过一番研究,有一个解决方案。我所做的如下:

    • 我在 routes.xml 文件中重写了我的路线。示例:

      <viewreviews>
          <type>BestBuy_Router_Route</type>
          <route>@klantbeoordelingen/:page</route>
          <translate>klantbeoordelingen</translate>
          <defaults>
              <module>default</module>
              <controller>review</controller>
              <action>index</action>
              <page>0</page>
          </defaults>
      </viewreviews>
      

    注意路由配置中的@。这将导致它被翻译。然后我添加了一个无意义的(用于 ZF)标签“翻译”,以便 Poedit 将其拾取。

    • 我编辑我的 .po 文件并在 poedit 中执行以下操作:poedit and xml files

    • 然后我用 poedit 抓取我的 XML 文件,它会找到标签并要求你翻译它们。

    • 翻译完这些后,请确保在路由器中设置了正确的翻译器。我在自己编写的前端控制器插件中的 routeStartup 循环中执行此操作:

          Zend_Controller_Router_Route::setDefaultLocale($translate->getLocale());
          Zend_Controller_Router_Route::setDefaultTranslator($translate);
      

    $translate 是一个 Zend_Translate 对象。

    这应该适合你。翻译后的路由适用于 Zend_Controller_Router_Route。我扩展了这个类并改进了(BestBuy_Router_Route),因为我希望所有路由都组装成小写等等。

    干杯!

    【讨论】:

      猜你喜欢
      • 2013-05-17
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2011-04-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多