2012-01-22 3 views
0

Я новичок в cakephp. Я использую версию 2.0.5, так как она выглядит как рельсы на большом количестве точек, и это довольно легко сделать.Многоуровневый API REST на торте php

В настоящее время я использую его для создания REST api для игры. Легко построить контроллер REST, но не может найти способ получить вложенные ресурсы.

Я имею в виду, что в рельсах легко получить что-то вроде этого: controller1/id/controller2/id.

У меня есть трудное время, чтобы найти способ сделать это в cakephp. Метод mapresources, похоже, не поддерживает многоуровневый отдых api. Я ошибаюсь?

Как я могу выполнить многоуровневый API для отдыха в cakephp 2?

+0

Не могли бы вы просто определить новый маршрут? – Evert

ответ

2

Итак, мне удалось создать собственный генератор.

В соответствии с тем фактом, что вы предоставляете массив («parent_controller» => «child_controller»).

Таким образом, вы можете создать для супергероя => супердержавы

супергероев/1/супердержавы/(здесь с или withouth ид в соответствии с вашими путями.

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

     } 

    }