これは本当に基本的なように思えますが、私はそれにこだわることができません。
次のように、コントローラーのメソッドに複数のパラメーターを送信しようとしています:
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つのパラメーターとオプションの他のパラメーターを受け入れるためにビューメソッドが必要です。
[〜#〜] note [〜#〜]:URLヘルパーを含めています。
ルートブラケットに問題がある場合は、{}から()ブラケットに変更するだけで機能します
から
$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';
に
$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2';
ルーティングルールを常に維持する
お気に入り
$route['subjects/(:num)/(:any)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3/$4';
$route['subjects/(:num)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3';
$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2';
ルーティングのために常にこのパターンに従います
このように追加すると
$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2';
$route['subjects/(:num)/(:any)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3/$4';
$route['subjects/(:num)/(:any)/(:any)'] = 'subjects/view/$1/$2/$3';
その後、常に最初の条件が常に真になります。
このリンクも参照してください-> codeigniter routing rules
この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';
そしてそれは私のために働いた:)