Codeigniter Маршрутизация Неограниченные Параметры - PullRequest
1 голос
/ 26 февраля 2012

У меня есть это в моем файле маршрутов 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 ]

8 голосов
/ 26 февраля 2012

Попробуйте это:

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

В основном он проверяет наличие двух сегментов (любой символ, кроме косой черты), а затем все, что после этого добавляется в качестве параметров в функцию контроллера.

Это не будет соответствовать маршрутам с параметрами NO , но это не сложно сделать, если вам нужно разобраться с этим.

0 голосов
/ 23 мая 2017

Это прекрасно работает,

$route['api/(.*)']='api/$1';
0 голосов
/ 27 февраля 2012

Я верю, что именно так и будет:

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