С Платформой Зенда я пытаюсь создать маршруты для 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"]
}
Так или иначе оба идентификатора потерялись...
Кто-либо?
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');