2012-01-22 73 views
0

我是cakephp的新手。我使用的是2.0.5版本,因爲它看起來像一大堆點上的軌道,完成任務很容易。蛋糕上的多級REST API php

我目前正在使用它來構建遊戲的REST api。構建REST控制器很容易,但無法找到嵌套資源的方式。

我的意思是在rails中很容易得到像這樣的東西:controller1/id/controller2/id。

我很難找到一種方法在cakephp中做到這一點。 mapresources方法似乎不支持多級別休息api。我錯了嗎?

如何在cakephp 2中執行多級別休息API?

+0

難道你只是定義一個新的路線? – Evert

回答

2

所以,我成功地建立了自己的發電機。

根據你提供數組的事實(「parent_controller」=>「child_controller」)。

這種方式可以產生超人=>超級大國

超級英雄/ 1 /超級大國/(這裏根據你的路由有或withouth的IDS。

參數數量mappeds到方法ARGS所以功能指數($ 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'))); 

     } 

    }