2011-03-03 33 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