2

使用する場合

$route['(:any)'] = 'pages/view/$1';

たとえば、ルーティングで他のコントローラーを使用したい場合。

$route['del/(:any)'] = 'crud/del';

それは動作しません。私はそれが使用すると思います

pages/view/del/$1

アイテムを削除するときの私のクラッドコントローラーではありません。どうすればこれを解決できますか?

4

3 に答える 3

10

示されているように、任意のURL$route['(:any)']と一致するため、他のカスタムルートを「キャッチオール」ルートの前に配置します。

$route['del/(:any)'] = 'crud/del';
// Other routes as needed...
$route['(:any)'] = 'pages/view/$1';
于 2012-06-13T21:45:48.240 に答える
1

その百パーセントは働いています

$route['(:any)'] url is placed last in your routes file

$route['(:any)/company_product_deal_detail']    =   "mypage_product_picture/deal_detail/$1";
$route['(:any)/company_service_deals/(:any)']    =   "mypage_service_deal_list/index/$1";
$route['(:any)/company_service_deals']    =   "mypage_service_deal_list/index/$1";

$route['(:any)']    =   "company/index/$1";
于 2013-03-20T11:02:48.773 に答える
0

私はそれが古い質問であることを知っていますが、私は自分自身が素晴らしい解決策であることに気づきました。

デフォルトでは、CodeIgniterはルート構成からのURLを優先するため(ストレートコントローラー、メソッドなどが指定されている場合でも)、この優先順位を次のように逆にしました。

system/core/Router.php検索_parse_routesメソッドで。

リテラルルートマッチの下にこのコードを追加します。

$cont_segments = $this->_validate_request($this->uri->segments);
if ($cont_segments == $this->uri->segments) {
  return $this->_set_request($cont_segments);
}

システム/コアからファイルを編集するため、このアプローチは少し間違っていることに同意しますが、多くのURLを処理するには高速な解決策が必要でした。

于 2013-09-10T06:30:59.177 に答える