2011-03-03 96 views
5
使用Zend框架来构建一个REST Web服务,我使用的模块分开我的API版本,正如我刚才所说​​

Zend的正则表达式>路由模块问题

防爆

IAM:“应用程序/模块/ V1 /控制器” ,“应用程序/模块/ v2 /控制器”具有不同的一组操作和功能。我在提到我的默认模块为“V1”我的application.ini

我使用的情况下随着正则表达式路由交换,因为我已经在我接受的解决方案中提到here

$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,我得到一个错误,如:

请求的URL /pt/public/index.php/api/v2/tags.xml 在此服务器上找到。

我不明白为什么它炸毁。是因为我把默认模块设置为v1?我无法根据网址更改模块。

这是我的目录树:

  • 应用
    • 模块
      • V1
        • 控制器
          • TagsController.php
      • V2
        • 控制器
          • TagsController.php
+0

你应该寻找到我已经使用一个RESTful API系统一个RESTful API系统 – RobertPitt 2011-03-03 09:26:16

+0

。我用更多的信息编辑了我的问题。 – 2011-03-03 12:18:03

+0

需要更多的细节。我们需要从应用程序的根文件夹中找到目录树 – emaillenin 2011-03-03 13:02:38

回答

3

天哪......我已经想通了V2模块的解决方案......控制器类名必须是“V2_TagsController”,而不仅仅是“TagsController”。感谢上帝,现在的工作:) 见的类名称下面的控制器:

- application 
     - modules 
     - v1 
      - controllers 
        - TagsController.php (class TagsController) 
     - v2 
      - controllers 
        - TagsController.php (class V2_TagsController) 
- library 
+1

你自己弄明白了 – emaillenin 2011-03-03 16:26:03