2012-01-22 11 views
0

cakephpの新機能です。私は2.0.5のリリースを使用しています。それは、大量のポイント上のレールのように見えます。ケーキのマルチレベルREST API

私は現在、ゲーム用のREST APIを構築するためにこれを使用しています。 RESTコントローラを構築するのは簡単ですが、ネストされたリソースを取得する方法はありません。

私はレールで、地獄のように、controller1/id/controller2/idのようなものを得るのは簡単です。

私はcakephpでこれを行う方法を見つけるのが難しいです。 mapresourcesメソッドは、複数レベルの残りのAPIをサポートしていないようです。私が間違っている?

cakephp 2でマルチレベルレストAPIを行うにはどうしたらいいですか?

+0

あなたは新しいルートを定義しませんか? – Evert

答えて

2

私は自分自身の発電機の建設に成功しました。

実際には、配列( "parent_controller" => "child_controller")を指定します。

あなたの経路に従ってスーパーヒーロー=>超大国

スーパーヒーロー/ 1 /大国/(ここでまたはwithouth IDSのために生成することができますこのように。

Argsの機能指数($ superhero_idので、メソッドの引数にmappeds )

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

     } 

    }