Ken*_*eux 9 php zend-framework zend-rest zend-rest-route zend-route
使用Zend Framework,我试图在以下模式组织的资源上构建REST api的路由:
如何使用Zend_Rest_Route设置它?
以下是我在bootstrap.php文件中为users资源(users /:id)设置路由的方法:
$this->bootstrap('frontController');
$frontController = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($frontController);
$frontController->getRouter()->addRoute('default', $restRoute);
Run Code Online (Sandbox Code Playgroud)
[据我所知,这是一个捕获所有路由,因此users/324/items/34将导致参数设置为id = 324和items = 34,并且所有内容都将映射到Users(前端模块)模型.从那里我想我可以测试items参数并在get请求中检索用户#324的项目#34.] <===我刚刚检查它并且它似乎不像那样工作:
Acessing/users/234/items/43和
var_dump($this->_getAllParams());
Run Code Online (Sandbox Code Playgroud)
在其余控制器的get动作中产生以下输出:
array(4) {
["controller"]=> string(5) "users"
["action"]=> string(3) "get"
[2]=> string(5) "items" ["module"]=> string(7) "default"]
}
Run Code Online (Sandbox Code Playgroud)
不知怎的,两个ids都迷路了......
任何人?
我开源解决方案到github和作为一个作曲家包.请参阅https://github.com/aporat/Application_Rest_Controller_Route.
我添加了一个新类,它扩展了Zend_Controller_Router_Route并添加了abiliy来添加自定义的restful路由,例如
$frontController = Zend_Controller_Front::getInstance();
$frontController->getRouter()->addRoute('users-messages', new Application_Rest_Controller_Route($frontController, 'users/:user_id/messages', ['controller' => 'users-messages']));
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
user_id或item_id在UsersController中的itemAction中可用作参数:
$user_id = $this->_request->getParam('user_id');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5348 次 |
| 最近记录: |