首页 > PHP开源 > 建立一个路由和控制器来处理国际化的静态页面–kohana3使用手册

建立一个路由和控制器来处理国际化的静态页面–kohana3使用手册

2011年2月10日 发表评论 阅读评论

Kohana能非常好的用来创建动态网站和应用。然后并不是所有的东西都需要动态化。创建每个静态页面制作一个控制器/动作组合是有点小困难的。这里就告诉你如何能创建一个控制器以及路由来处理静态页面并且支持国际化。那样你的网站就能支持多语言了。

路由

我打算做两个支持静态页面的路由示例。第一个假设我们需要支持一组定量的页面并且使用非常干净的 URL。第二个将支持任何网页数并在请求的 URI 中带有 page 前缀

/**
 * 这个路由支持页面 about,faq和locations
 * 每个页面都能使用它们的名字来访问,例如
 * http://example.com/about 或者 http://example.com/faq
 */
Route::set('static', '
', array('page' => 'about|faq|locations'))
->defaults(array(
    'controller' => 'page',
    'action' => 'static',
));

或者使用一个支持动态的页面名的路由

/**
 * 这个路由支持任意数量的页面.
 * 每个页面能都按下面的URL中的页面名来访问.
 * http://example.com/page/page_name
 */
Route::set('static2', 'page/
', array('page' => '.*'))
->defaults(array(
    'controller' => 'page',
    'action' => 'static',
));

控制器

相同的控制器/动作组合能够支持上面两种不同的路由。动作会负责寻找请求的页面名,然后加载相应的视图。

我下面的示例使用了默认的 Kohna 模板控制器

class Controller_Pages extends Controller_Template {

    public function action_static()
    {
        // 获得我们请求的页面名e
        $page = Request::instance()->param('page');

        // 分配适当的视图文件到模板内容
        $this->template->content = View::factory('page/'. i18n::$lang .'/'. $page );
    }
}

视图模板

你可能注意到了在上面的控制器中我们使用一个来自 Kohana i18n 类的静态属性来加载视图。 i18::$lang 将返回你 Kohana 网站的默认语言。你可以在 application/bootstrap.php 文件中定义它。

如果你的页面名字叫 about 而你的默认语言是 en-US 。那么控制器将寻找下面的视图文件。

page/en-us/about

完整的视图路径可能类似下面这样

/home/kerkness/kohana/application/views/page/en-us/about.php

你必须创建你想支持的所有语言的视图页面。

i18n 就是internationalization 的缩写,因为首字母i和尾字母n之间有18个字母,所以简写为 i18n,其实就是国际化的意思


分类: PHP开源 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.