我正在为REST服务编写一些路由。我的一个资源的URI看起来像这样
资源/用户/:id
我也想给用户的各项属性提供访问权限,具体形式如下:
资源/用户/:id/:attribute
但是当我试图定义后面的路径时,它没有起作用。这是我的INI文件,其中定义了路由。
routes.user.route = "资源/用户/:id"
routes.user.defaults.controller = user
routes.user.defaults.action = get
routes.user.defaults.id = 0
routes.user.reqs.id = "d+"
routes.user_attribute.route = "资源/用户/:id/:attribute/"
routes.user_attribute.defaults.controller = user
routes.user_attribute.defaults.action = getAttribute
routes.user_attribute.defaults.id = 0
routes.user_attribute.defaults.attribute = ""
routes.user_attribute.reqs.id = "d+"
routes.user_attribute.reqs.id = "reviews|lists"
当我试图在浏览器中访问资源/用户/ 4 /评论时,我会得到以下输出
An error occurred
Page not found
Exception information:
Message: Invalid controller specified (resources)
Stack trace:
#0 /usr/local/lib/ZendFramework/ZendFramework-1.7.1-minimal/library/Zend/Controller/Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 /home/baileyp/public_html/web/index.php(50): Zend_Controller_Front->dispatch()
#2 {main}
Request Parameters:
array(4) {
["controller"]=>
string(9) "resources"
["action"]=>
string(4) "user"
[10]=>
string(7) "reviews"
["module"]=>
string(7) "default"
}
因此,它显然没有正确处理我的第二个路由,因为它认为控制器是“资源”,动作是“用户”。我在这里做错了什么?我没有在Zend网站上找到任何示例来说明如何实现这一点。
我不想只为了完成这个任务而使用模块 - 避免创建文件夹等来匹配URI是路由系统的整个目的。