2012-10-03 47 views
2

我有一個網站有多種語言。對於我的新聞頁面,我有兩條規則將分頁變量路由到我的控制器。一種用於所有語言(en,ct,cs,kr),另一種用於默認語言。Codeigniter路由正則表達式

routes.php文件

$route['^(en|ct|cs|kr)/news/page/(:num)'] = 'news/index/$1'; 
$route['news/page/(:num)'] = 'news/index/$1'; 

新聞控制器

public function index($id) 
{ 
    echo $id; 
} 

的路由進行訪問的消息控制器,但是$id參數沒有被傳遞到index()方法。

如果我附和$id它返回的語言片段,而不是拼版可變我期待:

mysite.com/en/news/page/2 // $ ID返回「恩」。
mysite.com/kr/news/page/2 // $ id返回'kr'。

當我寫的路線出來單獨爲每種語言它的工作原理:

$路線[ 'EN /新聞/頁/(:NUM)'] = '新聞/指數/ $ 1';

我在哪裏用我的正則表達式錯了嗎?

回答

2

這是因爲在您的第一條規則中,您會捕獲2個網址段。第一種是語言(例如en),第二種是id(或頁碼)。所以,在你的第一條規則中,你應該使用$2而不是$1

$route['^(en|ct|cs|kr)/news/page/(:num)'] = 'news/index/$2'; 
+0

完美!這確實有道理。非常感謝你。 – Jeemusu