Web アプリケーションのセクションの望ましい URL 構造は次のとおりです:
/user/FooBar42/edit/privacy
、これをコントローラーにルーティングしたいと思います: ユーザー、関数: 編集、FooBar42
およびprivacy
引数として (この順序で)。CodeIgniter でこれを達成するにはどうすればよいですか?
質問する
462 次
2 に答える
3
このルートを定義するapplication/config/routes.php
とうまくいくはずです:
$route['user/(:any)/edit/(:any)'] = "user/edit/$1/$2";
ただし、(:any)
上記のルートでは複数のセグメントが一致することに注意してください。たとえば、コントローラーで関数user/one/two/edit/three
を呼び出しますが、最初のパラメーターと 2 番目のパラメーターとしてのみ渡します。edit
user
one
two
(:any)
を正規表現に置き換えると、少なくとも 1 の長さの英数字の値が([a-zA-Z0-9]+)
1 つだけ許可されます。これにより、複数のセグメントを許可することが許可される上記の問題が軽減されます。を使用すると、404 ページが表示されます。/
user/one/two/edit/three
$route['user/([a-zA-Z0-9]+)/edit/([a-zA-Z0-9]+)'] = "user/edit/$1/$2";
于 2013-04-11T00:16:04.957 に答える
1
CI コントローラーの再マッピング オプションを使用することもできます
http://ellislab.com/codeigniter/user-guide/general/controllers.html#remapping
そして、このようなことをしています:
public function _remap($method, $params = array())
{
// check if the method exists
if (method_exists($this, $method))
{
// run the method
return call_user_func_array(array($this, $method), $params);
}
else
{
// method does not exists so you can call nay other method you want
$this->edit($params);
}
}
于 2013-04-11T13:33:54.127 に答える