【问题标题】:kohana3.2 routing with subdomains - multilanguagekohana3.2 子域路由 - 多语言
【发布时间】:2013-08-08 19:02:29
【问题描述】:

我在 kohana 3.2 中遇到了一个小问题。我想创建一个支持多种语言的简单博客。

我想创建这样的链接:

  • pl.yourwebsite.com/kontakt
  • en.yourwebsite.com/contact
  • xx.yourwebsite.com/上面控制器的一些翻译

我为联系和路由设置了一个简单的控制器,但是在路由方面我必须设置静态路由,这是一个非常糟糕的解决方案。例如:

对于 pl 语言:

Route::set('kontakt', 'kontakt(/<action>(/<id>(/<id2>(/<id3>))))')
    ->defaults(array(
        'controller' => 'contact',
        'action'     => 'index',
    ));

当我使用domain.com/contact 和domain.com/kontakt 时它可以工作,但是当我将拥有 20 多个控制器和 3 种语言时;那将是 60 多条路线 == 糟糕的解决方案。

感谢您的帮助。

【问题讨论】:

    标签: routing kohana multilingual subdomain kohana-3.2


    【解决方案1】:

    您至少可以将单个页面的翻译组合在一起,但为此您仍然需要每页至少有一个路由。

    此示例使用正则表达式来匹配 url 的 &lt;page_name&gt; 部分:

    Route::set('kontakt', '<page_name>(/<action>(/<id>(/<id2>(/<id3>))))',
               array('page_name' => '(contact|kontakt|contatto)'))
        ->defaults(array(
            'controller' => 'contact',
            'action'     => 'index',
        ));
    

    另外考虑你可以在设置Route时指定一个回调函数,如果它找到匹配的路由,可以返回应该调用的控制器和动作。这允许您运行自己的代码并确定要调用的控制器/操作。请参阅手册中的Lambda/Callback route logic 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-12
      • 2013-12-19
      • 1970-01-01
      • 2013-09-13
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多