2

複数言語のサイトがあります。私のニュース ページでは、ページネーション変数をコントローラーにルーティングするための 2 つのルールがあります。1 つはすべての言語 (en、ct、cs、kr) 用で、もう 1 つはデフォルト言語用です。

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 は「en」を返します。
mysite.com/kr/news/page/2 // $id は 'kr' を返します。

言語ごとに個別にルートを書き出すと機能します。

$route['en/news/page/(:num)'] = 'ニュース/インデックス/$1';

正規表現のどこかで間違っていますか?

4

1 に答える 1

3

これは、最初のルールで URL の 2 つのセグメントをキャプチャしているためです。1 つ目は言語 (例: en)、2 つ目はid(またはページ番号) です。したがって、最初のルールでは代わりに を使用する必要が$2あり$1ます。

$route['^(en|ct|cs|kr)/news/page/(:num)'] = 'news/index/$2';
于 2012-10-03T02:10:20.057 に答える