23

これは本当に基本的なようですが、私はそれのコツをつかむことができません。

次のように、コントローラーのメソッドに複数のパラメーターを送信しようとしています。

http://localhost/ci/index.php/subjects/3/state

これは私が試したルーティングです:

$route['subjects/(:num)'] = 'subjects/view/$1';
$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';

メソッドは2つのパラメータを受け入れました:

public function view($slug, $id = null){

}

しかし、私は404を取得しているようです。これを機能させるにはどうすればよいですか?常に1つのパラメーターとオプションの他のパラメーターを受け入れるためにviewメソッドが必要です。

:私はURLヘルパーを含めています。

4

3 に答える 3

44

ルート ブラケットに問題がある場合は、{} から () ブラケットに変更するだけで機能します

から

$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';

$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2';
于 2012-11-06T07:41:41.780 に答える
3

私はかつてこのURIパターンを試しました

$route['(:any)'] = 'welcome/list1/$1';
$route['(:any)/(:num)'] = 'welcome/list1/$1/$2';

$route['(:any)/(:any)'] = 'welcome/list2/$1/$2';
$route['(:any)/(:any)/(:num)'] = 'welcome/list2/$1/$2/$3';

$route['(:any)/(:any)/(:any)'] = 'welcome/list3/$1/$2/$3';

しかし、うまくいかなかったので、正規表現に置き換えました

([a-z 0-9 -]+)交換(:any) して ([0-9]+)交換(:num)

そうなりました

$route['([a-z 0-9 -]+)'] = 'welcome/list1/$1';
$route['([a-z 0-9 -]+)/([0-9]+)'] = 'welcome/list1/$1/$2';

$route['([a-z 0-9 -]+)/([a-z 0-9 -]+)'] = 'welcome/list2/$1/$2';
$route['([a-z 0-9 -]+)/([a-z 0-9 -]+)/([0-9]+)'] = 'welcome/list2/$1/$2/$3';

$route['([a-z 0-9 -]+)/([a-z 0-9 -]+)/([a-z 0-9 -]+)'] = 'welcome/list3/$1/$2/$3';

そして、それは私のために働いた:)

于 2016-02-20T11:20:25.997 に答える