0

私はcakephpを初めて使用します。私は2.0.5リリースを使用しています。これは、多数のポイントのレールのように見えるため、作業を行うのは非常に簡単です。

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

つまり、Railsでは、controller1 / id / controller2/idのようなものを取得するのは地獄のように簡単です。

私はcakephpでこれを行う方法を見つけるのに苦労しています。mapresourcesメソッドはマルチレベルのRESTAPIをサポートしていないようです。私が間違っている?

Cakephp 2でマルチレベルのRESTAPIを実行するにはどうすればよいですか?

4

1 に答える 1

2

だから、私は自分のジェネレーターを作ることに成功しました。

事実によると、array( "parent_controller" => "child_controller")を提供します。

このようにして、スーパーヒーロー=>スーパーパワーのために生成することができます

superheros / 1 / superpowers /(ここではルートに応じてIDの有無にかかわらず。

Argsはメソッドargsにマップされるため、function index($ 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')));

        }

    }
于 2012-01-25T11:07:54.023 に答える