2012-02-26 5 views
0

현재 CodeIgniter 라우트 파일에이 코드가 있습니다. URI가 api/controller/function 인 항목을 controller/api_function에 매핑합니다.Codeigniter Routing Unlimited Paramaters

$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';

감사를 찾고 있어요!

답변

7

이 시도 :

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

그것은 기본적으로 두 개의 세그먼트 (모든 문자하지만 슬래시)를 확인은, 그 후 아무것도 컨트롤러 함수에 매개 변수로 추가됩니다.

이 매개 변수는 NO 매개 변수가있는 경로와 일치하지 않지만 처리해야하는 경우 어렵지 않습니다.

+0

이 완벽하게 작동합니다! 고마워요 – Kieran

+0

제발 좀 도와주세요. 제 URL은 다음과 같아야합니다 :'eng/controller/method/many-params','eng'는 어떤 언어 이니, 이렇게 경로를 설정했습니다 : '$ route [ 'en-gb/([^/]*)/([^/]*)/(.*)'] = '$ 1/$ 2/$ 3/eng';'그러나 이것은 보이지 않습니다. 나를 위해 일하면서, 나는 404 오류를 얻는다. 내가 뭘 잘못하고 있는지 어떤 생각? – Lykos

0

난 그냥이 할 것이라고 믿는다

이 완벽하게 작동
$route['api/(:any)/(:any)'] = '$1/api_$2'; 
$route['api/(:any)/(:any)/(:any)'] = '$1/api_$2/$3'; 
+0

불행히도 이것은 작동하지 않았습니다. – Kieran

+0

'(: any)'가 욕심 많은 reg ex 절이기 때문에 이것은 작동하지 않지만 훨씬 좋게 보입니다. CI가 라우트에 '(: 세그먼트)'도우미를 수행하면 좋을 것입니다. – landons

0

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