0

您好论坛,在使用 CI 2.0.3 和国际化 (i18n) 库时,我遇到了这个问题。我在这里读过类似的帖子,但它们并没有解决我的问题。希望这里有人可以指出我正确的方向。

路线.php:

$route['default_controller'] = "home";
$route['404_override'] = '';
$route['scaffolding_trigger'] = "";

// '/en', '/de', '/ru' URIs -> use default controller
$route['^(en|de|ru)$'] = $route['default_controller'];  

// URI like '/en/about' -> use controller 'about'
$route['^(en|de|ru)/(:any)'] = "$2";  

这很好用,但我有一个名为“博客”的区域,在博客 CI_Controller 中是一个从数据库中获取文章的函数:

public function article()
 {
  $this->db->where('id', $this->uri->segment(4));
  $data['query']= $this->db->get('blogentries');

  $this->load->view('article_view',$data); 
 }  

太棒了,也能用。结果是一个类似 /en/blog/article/1 的 URL。在语言文件中,我的变量保存如下:

$lang['menu.blog'] = "Blog"; 

在博客视图中加载了 $lang 变量:

<?=lang('menu.blog')?> 

打开文章时出现问题,语言文件中的var根本没有加载。http://localhost/而不是“博客”。我想这与路由有关。因此,如果对于像 /en/blog 这样的 URL,我将拥有:

$route['^(en|de|ru)/(:any)'] = "$2"; 

所有其他 URL 都可以正常工作并正确加载语言文件中的变量。

但是我如何处理像 /en/blog/article/1 这样的 URL?我在思考正确的方向吗?建议表示赞赏。

谢谢你。

4

1 回答 1

0

我可能不明白你在问什么,但似乎你可以这样做:

$route['^(en|de|ru)/blog/article/(:any)']

这应该捕获不同的语言,但仍然通过 id 将您路由到博客文章。

于 2012-05-10T13:17:39.580 回答