Codeigniter路由无限参数

时间:2012-02-26 17:33:18

标签: codeigniter parameters routes uri url-routing

我目前在我的CodeIgniter路由文件中有这个。 它会将URI api/controller/function映射到controller/api_function

$route['api/(:any)/(:any)/(:any)/(:any)/(:any)/(:any)'] = '$1/api_$2/$3/$4/$5/$6';
$route['api/(:any)/(:any)/(:any)/(:any)/(:any)'] = '$1/api_$2/$3/$4/$5';
$route['api/(:any)/(:any)/(:any)/(:any)'] = '$1/api_$2/$3/$4';
$route['api/(:any)/(:any)/(:any)'] = '$1/api_$2/$3';
$route['api/(:any)/(:any)'] = '$1/api_$2';

如您所见,这不是很有效。我需要一个不同的路线,具体取决于提供的参数数量。有没有办法自动传递所有参数?所以假设,我正在寻找类似......

的东西

$route['api/(:any)/(:any)/unlimited parameters'] = '$1/api_$2/unlimited parameters';

谢谢!

3 个答案:

答案 0 :(得分:8)

试试这个:

$route['api/([^/]*)/([^/]*)/(.*)'] = '$1/api_$2/$3';

它基本上检查两个段(任何字符,但是斜杠),然后将任何内容作为参数附加到控制器函数。

这与具有 NO 参数的路线不匹配,但如果您需要处理这种情况,则不难做到。

答案 1 :(得分:0)

我相信这样做:

$route['api/(:any)/(:any)'] = '$1/api_$2';
$route['api/(:any)/(:any)/(:any)'] = '$1/api_$2/$3';

答案 2 :(得分:0)

这完美无缺,

$route['api/(.*)']='api/$1';