2015-01-13 2 views
0

우리의 라우터는 컨트롤러와 액션 정의하기 전에 사용자 정의 매개 변수를 정의합니다CakePHP의 사용자 정의 나머지 라우팅

그것은 접두사 요청과 일치
Router::connect(
    '/:store/:controller/:action/*', 
    array(), 
    array(
     'store' => 'shop\/[^\/]+' 
    ) 
); 

Router::mapResources('Invoices'); 
Router::parseExtensions(); 

'/ 상점/X'x는 ID입니다 :

http://host.com/shop/1/invoices/view/1 
그것은 B를 작동, 해결 방법으로

http://host.com/shop/1/invoices/1.json (doesn't work) 

:

그러나, 위의 정의가 제대로되지 경로 REST 요청하지 (그러나 REST에는 이상적이지 않은) 동작을 전달하는 :

http://host.com/shop/1/invoices/view/1.json 

나머지 경로를 만드는 방법에 대한 아이디어가 있습니까?

답변

3

연결 기능의 세 번째 매개 변수에 사용할 수있는 특수 키가 있습니다.

pass는 라우팅 된 매개 변수 중 어떤 것이 통과 배열로 이동되어야하는지 정의하는 데 사용됩니다. 통과 할 매개 변수를 추가하면 일반 경로 배열에서 제거됩니다. 전의. 'pass'=> array ('id')

Router::connect(
    '/:store/:controller/:id', 
    array('[method]'=>'GET', 'action'=>'view'), 
    array(
     'store' => 'shop\/[^\/]+', 
     'id' => '[0-9]+', 
     'pass' => array('id') 
    ) 
); 

CakePHP 라우팅 문서에서 해결책을 찾았습니다.

관련 문제