我使用zend来构建REST服务,我使用模块来分离我的api版本,就像我提到的
例:“应用程序/模块/v1/控制器”、“应用程序/模块/v2/控制器”具有不同的操作和功能集。我在application.ini中提到了我的默认模块“application.ini”
正如我在我接受的解决方案中提到的一样,我正在使用上下文切换和Regex路由:
$router->addRoute(
'route1',
new Zend_Controller_Router_Route_Regex(
'api/([^-]*)/([^-]*)\.([^-]*)',
array(
'controller' => 'index',
'action' => 'index'),
array(
1 => 'module',
2 => 'controller',
3 => 'format'
)
));这是我的网址:http://localhost/api/v1/tags.xml
"v1“表示模块。现在,转到上下文切换,如果url有v1,它将转到v1模块的TagsController。但是,如果url中的模块是v2,我将得到一个错误,如:
在此服务器上找不到请求的
/pt/public/index.php/api/v2/tags.xml。
我不明白它为什么会爆炸。是因为我将默认模块设置为v1吗?我不能改变基于url的模块。
,这是我的目录树:
- v2
- controllers
- TagsController.php
发布于 2011-03-03 14:04:19
我的天..。我已经想出了解决办法..。v2模块中的控制器类名必须是"V2_TagsController",而不仅仅是"TagsController“。谢天谢地,它现在起作用了:)参见下面的控制器类名:
- application
- modules
- v1
- controllers
- TagsController.php (class TagsController)
- v2
- controllers
- TagsController.php (class V2_TagsController)
- libraryhttps://stackoverflow.com/questions/5178701
复制相似问题