2012-08-16 110 views
0

我有一個基於模塊的zend應用程序。我試圖根據定義的版本號(param)適當地路由模塊,即。 domain.com/api/v1。Zend自定義路由,僅帶參數名稱,沒有值

我的應用程序看起來像這樣

-application 
... 
--modules 
----default 
----api 
----api2 
... 

我在我的引導路由器正確的路由,但到默認模塊,「API」。

$frontController = Zend_Controller_Front::getInstance(); 

    $router = $frontController->getRouter(); 

    $route = new Zend_Controller_Router_Route(
        'api/:apiversion/:controller/:action/*', 

        array('module' => 'api', 
         'apiversion' => ':apiversion', 
         'controller' => ':controller', 
         'action' => ':action') 
    ); 

    $router->addRoute('api', $route); 

如何根據我路徑上的apiversion PARAM, 'V1', 'V2'?

domain.com/api/v2/users/id/5 => /api2/users/id/5 

是的我明白,我可以讓用戶輸入domain.com/api2/ ... - 不是我想要的。

- 是我明白我可以讓用戶輸入domain.com/api/version/2 ... - 不是我想要的。

我只會做那些如果我想要的東西無法實現的。謝謝:)

我想我可以做一個 - > getParam(「V1」),看它是否存在,然後設置相應模塊,除非有一個漂亮的,動態的方式

回答

1

什麼做這樣的事情:

$frontController = Zend_Controller_Front::getInstance(); 

$router = $frontController->getRouter(); 

$route = new Zend_Controller_Router_Route(
      'api/v1/:controller/:action/*', 

      array('module' => 'api', 
       'apiversion' => 'v1', 
       'controller' => ':controller', 
       'action' => ':action') 
); 

$router->addRoute('api', $route); 
$route2 = new Zend_Controller_Router_Route(
      'api/v2/:controller/:action/*', 

      array('module' => 'api2', 
       'apiversion' => 'v2', 
       'controller' => ':controller', 
       'action' => ':action') 
); 

$router->addRoute('api2', $route2); 

問候

mimiz

+0

哼。首先嚐試了幾乎類似的東西,但是我得到了api:v1資源未找到問題(ACL已實施)。但現在它正在工作:p – steve 2012-08-16 20:49:30

+0

此外,試圖去尋找一個通用的版本路線,而沒有定義版本號,但這將工作。 – steve 2012-08-16 20:50:37