0

我是 cakephp 的新手。我正在使用 2.0.5 版本,因为它看起来像一大堆点上的导轨,很容易完成工作。

我目前正在使用它来构建游戏的 REST api。构建 REST 控制器很容易,但找不到获取嵌套资源的方法。

我的意思是在 Rails 中很容易得到这样的东西:controller1/id/controller2/id。

我很难在 cakephp 中找到一种方法来做到这一点。mapresources 方法似乎不支持多级 rest api。我错了吗?

我如何在 cakephp 2 中做一个多级的休息 API?

4

1 回答 1

2

所以,我成功地构建了自己的生成器。

根据您提供数组(“parent_controller”=>“child_controller”)的事实。

这样你就可以为超级英雄生成 => 超级大国

superheros/1/superpowers/ (根据您的路线,这里有或没有 id。

args 映射到方法 args 所以函数 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 回答