如何将2个参数路由到控制器?

eri*_*hak 22 codeigniter codeigniter-url codeigniter-2 codeigniter-routing

这看起来非常基本,但我无法理解它.

我正在尝试向控制器中的方法发送多个参数,如下所示:

http://localhost/ci/index.php/subjects/3/state
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的路线:

$route['subjects/(:num)'] = 'subjects/view/$1';
$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';
Run Code Online (Sandbox Code Playgroud)

方法接受2个参数:

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

}
Run Code Online (Sandbox Code Playgroud)

但我似乎得到了404.我怎么能让这个工作?我需要view方法总是接受1个参数和可选的其他参数.

注意:我包括网址助手.

ume*_*ooq 40

您的路线支架有问题,只需将其从{}更改为()括号即可

$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';
Run Code Online (Sandbox Code Playgroud)

$route['subjects/(:num)/(:any)'] = 'subjects/view/$1/$2';
Run Code Online (Sandbox Code Playgroud)


PHP*_*eam 7

始终保持您的路由规则

喜欢

$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';
Run Code Online (Sandbox Code Playgroud)

始终遵循此模式进行路由

如果你这样添加

$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';
Run Code Online (Sandbox Code Playgroud)

然后总是第一个条件每次都是真的.

也请参考此链接 - > codeigniter路由规则