【发布时间】:2011-09-05 12:57:06
【问题描述】:
目前我有一个为事件控制器 (/event) 工作的 REST 路由。我想在 EventSignUp 控制器中处理事件注册,并将此控制器映射到 /event/signups 路由。
Zend Framework documentation 声明 URL /event/signup/:id 应该映射到 Event_SignupController。但这对我不起作用。
我为我的 Bootstrap 类中的所有控制器设置了默认 REST 路由:
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
// Specifying all controllers as RESTful:
$restRoute = new Zend_Rest_Route($front);
$router->addRoute('default', $restRoute);
是我遗漏了什么还是文档有误?如果文档有误,我应该采取什么方法来实现我想要的目标?
顺便说一句,很多现有的控制器都依赖于默认的 REST 路由,所以如果有一个不需要为所有现有控制器实现新路由的解决方案,那就太好了。
编辑:文档指出 /product/ratings 将被翻译为 Product_RatingsController,这意味着 Products 模块中的 RatingsController。因为我的所有控制器都放置在默认模块中,所以 Rest Route 不支持我想要的行为。
所以这改变了我的问题,是否可以在不影响现有控制器对默认 Rest 路由的依赖的情况下实现我想要的行为?如果是这样,怎么做?如果没有,对我来说最好的方法是什么?
【问题讨论】:
-
你在stackoverflow.com/questions/4846726/…上看到Zend_Controller_Router_Route了吗
-
是否可以将 GET、PUT、POST 和 DELETE 请求与 Zend REST 控制器中的各自方法与 Zend_Controller_Router_Route 匹配?
-
类似: $route = new Zend_Controller_Router_Route( '/api/:Id', array( 'module' => 'mymodule', 'controller' => 'mycontroller', 'action' => strtolower($request->getMethod()), ) );
-
谢谢!这将起作用,但您必须在控制器插件的 routeStartup() 挂钩中添加路由,否则您将无权访问请求对象。我将编写完整的代码来处理 :id 参数和 index() 方法,并将其发布为这个问题的答案。
-
当您的声望低于 100 时,回答您自己的问题有 8 小时的时间限制,所以当这个时间限制过后我会发布我的答案。
标签: php zend-framework zend-route zend-rest zend-rest-route