Php Zend Regex>;路由模块问题

Php Zend Regex>;路由模块问题,php,zend-framework,Php,Zend Framework,正如我所提到的,我使用zend框架构建REST web服务,并使用模块分离api版本 例如:“应用程序/模块/v1/控制器”、“应用程序/模块/v2/控制器”具有不同的操作和功能集。我在application.ini中提到了默认模块“v1” 我正在使用上下文切换和正则表达式路由,正如我在接受的解决方案中提到的: $router->addRoute( 'route1', new Zend_Controller_Router_Route_Rege

正如我所提到的,我使用zend框架构建REST web服务,并使用模块分离api版本

例如:“应用程序/模块/v1/控制器”、“应用程序/模块/v2/控制器”具有不同的操作和功能集。我在application.ini中提到了默认模块“v1”

我正在使用上下文切换和正则表达式路由,正如我在接受的解决方案中提到的:

$router->addRoute(
            'route1',
            new Zend_Controller_Router_Route_Regex(
                                            'api/([^-]*)/([^-]*)\.([^-]*)', 
                                            array(
                                                'controller'   => 'index',
                                                'action'       => 'index'),
                                            array(
                                                1 => 'module',
                                                2 => 'controller',
                                                3 => 'format'
                                            )
));
这是我的网址:

“v1”表示模块。现在,谈到上下文切换,如果url有v1,它将进入v1模块的TagsController。但是,如果url中的模块是v2,则会出现如下错误:

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

我不明白它为什么会爆炸。是因为我将默认模块设置为v1吗?我无法根据url更改模块

这是我的目录树:

  • 应用
    • 模块
      • v1
        • 控制器
          • TagsController.php
      • v2
        • 控制器
          • TagsController.php
  • 图书馆

    • 天哪。。。我已经想出了解决办法。。。v2模块中的控制器类名必须是“v2_TagsController”,而不仅仅是“TagsController”。感谢上帝,它现在正在工作:) 请参见下面控制器的类名:

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

      您应该研究RESTful API系统我已经在使用RESTful API系统了。我用更多信息编辑了我的问题。需要更多详细信息。我们需要应用程序根文件夹中的目录树用目录树更新我的答案。。。请参阅,v1和v2是我的应用程序中的模块,默认模块在application.ini文件中指定为v1。