2012-01-22 7 views
0

저는 cakephp를 처음 사용합니다. 나는 2.0.5 버전을 사용하고 있습니다. 많은 일들을 처리하기가 매우 쉽습니다.케이크 PHP의 다단계 REST API

현재 게임용으로 REST API를 제작하는 데 사용하고 있습니다. REST 컨트롤러를 만드는 것은 쉽지만 중첩 된 리소스를 얻는 방법을 찾을 수 없습니다.

나는 레일 (rail)에서 controller1/id/controller2/id와 같은 것을 얻는 것이 쉽다는 것을 의미합니다.

나는 이것을 cakephp에서 할 길을 찾는데 어려움이있다. mapresources 메서드는 다중 레벨 나머지 API를 지원하지 않는 것 같습니다. 내가 잘못?

어떻게 cakephp 2에서 다중 레벨 나머지 API를 할 수 있습니까?

+0

새로운 경로를 정의하지 않으시겠습니까? – Evert

답변

2

그래서, 제 자신의 생성기를 구축하는 데 성공합니다.

사실상 배열 ("parent_controller"=> "child_controller")을 제공합니다.

당신은 슈퍼 히어로에 대해 생성 할 수있는이 방법 => 강대국

슈퍼 히어로/1/초강대국/(여기 경로에 따라 또는 IDS withouth.

인수 메소드의 인수에 mappeds 기능 지수 때문에 ($의 superhero_id)

function generateNestedResources($array) 
    { 

     foreach($array as $key=>$value) 
     { 
      //Index -GET/
      Router::connect('/'.$key.'/:'.$key.'_id/'.$value, 
       array('controller' => $value,'action' => 'index','method' => 'GET'), 
       array($key.'_id' => '[0-9]+','pass' => array($key.'_id'))); 
      // View -GET /id 
      Router::connect('/'.$key.'/:'.$key.'_id/'.$value.'/:id', 
       array('controller' => $value,'action' => 'view','method' => 'GET'), 
       array('id' => '[0-9]+', $key.'_id' => '[0-9]+','pass' => array($key.'_id','id'))); 

      //add -POST/ 
      Router::connect('/'.$key.'/:'.$key.'_id/'.$value, 
       array('controller' => $value,'action' => 'add','method' => 'POST'), 
       array($key.'_id' => '[0-9]+','pass' => array($key.'_id'))); 
      //edit -PUT/ID 
      Router::connect('/'.$key.'/:'.$key.'_id/'.$value.'/:id', 
       array('controller' => $value,'action' => 'edit','method' => 'PUT'), 
       array('id' => '[0-9]+', $key.'_id' => '[0-9]+','pass' => array($key.'_id','id'))); 

      //delete -DELEte /ID 
      Router::connect('/'.$key.'/:'.$key.'_id/'.$value.'/:id', 
       array('controller' => $value,'action' => 'delete','method' => 'DELETE'), 
       array('id' => '[0-9]+', $key.'_id' => '[0-9]+','pass' => array($key.'_id','id'))); 

     } 

    }