Как настроить Иерархические Маршруты Отдыха Зенда?

С Платформой Зенда я пытаюсь создать маршруты для API REST на ресурсах, организованных в следующем шаблоне:

Как я настраиваю это с Zend_Rest_Route?

Вот то, как я имею, устанавливают маршрут для пользовательского ресурса (users/:id) в моем bootstrap.php файле:

  $this->bootstrap('frontController');
  $frontController = Zend_Controller_Front::getInstance();
  $restRoute = new Zend_Rest_Route($frontController);
  $frontController->getRouter()->addRoute('default', $restRoute);

[Насколько я понимаю, это - выгода, весь маршрут так users/324/items/34 был бы результаты в наборе параметров как id=324 и items=34, и все будет отображено на Пользователях (передний модуль) Модель. Оттуда я предполагаю, что мог просто протестировать на параметр объектов и получить объект № 34 для пользователя № 324 по получить запросу.] <=== я просто проверил его, и это не делает, кажется, работает как этот:

Acessing/users/234/items/43 и

var_dump($this->_getAllParams());

в получить действии остальных контроллер приводит к следующему выводу:

array(4) {
 ["controller"]=> string(5) "users"
 ["action"]=>  string(3) "get"
 [2]=>  string(5) "items"  ["module"]=>  string(7) "default"]
}

Так или иначе оба идентификатора потерялись...

Кто-либо?

9
задан Kenji Baheux 5 February 2010 в 08:51
поделиться

1 ответ

AFAIK, в Zend_Rest_Route нет функции, которая позволяла бы делать что-то подобное. Предложение есть, но неизвестно, когда оно будет реализовано. Вы можете добавить это в свой Bootstrap, чтобы настроить этот собственный маршрут.

$front = $this->getResource('FrontController'); 
$testRoute = new Zend_Controller_Router_Route(
    'users/:user_id/items/:item_id',
    array(
        'controller' => 'users',
        'action' => 'item',
        'module' => 'default'
    )
);

$front->getRouter()->addRoute('test', $testRoute);

user_id или item_id становятся доступными в itemAction в UsersController в качестве параметров:

$user_id = $this->_request->getParam('user_id');
5
ответ дан 4 December 2019 в 14:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: