0

私は codeigniter フレームワークを使用しており、デフォルトでサイトコントローラーをロードしています

$route['default_controller'] = "site";

しかし、今はroutes.php構成をセットアップして、以前と同じようにコントローラーにアクセスできるようにしたいのですが、コントローラーが存在しない場合は、ユーザーのコントローラーを実行してニックネームかどうかを確認し、そのユーザーのプロファイルを表示できるようにします。

これは Facebook のようなものでwww.facebook.com/username、自分のユーザー プロファイルに移動できます。しかし、他のコントローラーには引き続きアクセスできるようにしたいwww.mysite.com/site,www.mysite.com/site/functionなど

:any ワイルドカードを試してみましたが、うまくいきませんでした。正規表現で問題を解決する人もいますが、私は正規表現が苦手で、それをまとめる方法がわからないので、うまくいくでしょう。

4

2 に答える 2

2

私のやり方を試してください:

まず、$route持っているコントローラーごとに設定します。exmp:

$route['controller_1'] = 'controller_1';
$route['controller_1/(:any)'] = 'controller_1/$1'; //this let you access your method
$route['controller_2'] = 'controller_2';
$route['controller_2/(:any)'] = 'controller_2/$1'; //this let you access your method

次に、使用します:any

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

幸運を !!!

于 2013-04-02T12:45:04.453 に答える
0

この方法を試してください。コントローラーがたくさんある場合は、多くの繰り返し行を減らすことができますが、CI ルールに違反しているかどうかはわかりません。

//this code block should be placed after any kind of reserved routes config
$url_parts = explode('/',strtolower( $_SERVER['REQUEST_URI']) );
$reserved_routes = array("controller_1", "controller_2", "controller_3" );
if (!in_array($url_parts[1], $reserved_routes)) {    
    $route['([a-zA-Z0-9_-]+)'] = "controller_1/profile/$1";
}
于 2013-08-21T21:15:55.460 に答える