2012-01-24 45 views
2

我正在zend框架中使用自定義路由。我已成功地管理我的自定義路由 ,但我有一個問題,即我想轉發請求之後根據一些預定義的條件,但我無法轉發我的。我沒有得到任何錯誤。在zend框架中使用自定義路由轉發請求

以下是路由配置文件的代碼 -

; ---多個請求

routes.resource.route = "resource/:moduleName/:fileType/" 
routes.resource.defaults.controller = resources 
routes.resource.defaults.module = 'default' 
routes.resource.defaults.action = 'index' 

路由; ---路由單打文件

routes.resourceCSS.type = "Zend_Controller_Router_Route_Regex" 
routes.resourceCSS.route = "resource/(\w+)/([a-zA-z0-9]+\.([a-zA-z0-9]+))" 
routes.resourceCSS.defaults.module = 'default' 
routes.resourceCSS.defaults.controller = "resources" 
routes.resourceCSS.defaults.action = checkfiletype 
routes.resourceCSS.map.moduleName = 1 
routes.resourceCSS.map.fileName = 2 
routes.resourceCSS.map.fileType = 3 

控制器名稱爲資源 Follwoing是控制器的代碼: -

class ResourcesController extends Zend_Controller_Action 
{ 


    public function checkfiletypeAction() 
    { 
     var_dump($this->_getAllParams()); 
     $moduleName = $this->getRequest()->getParam('moduleName'); 
     $fileName = $this->getRequest()->getParam('fileName'); 
     $fileType = strtolower($this->getRequest()->getParam('fileType')); 

     switch($fileType) 
     { 
     case 'css' : 
      echo $fileType ; 
      $this->_forward('css') ; 
      break ; 
     case 'js' : 
      $this->_forward('js') ; 
      break ; 
     default : 
      break; 

     } 

     die(); 
    } 


    public function cssAction() 
    { 
     var_dump($this->_getAllParams()); 
     die(); 

    } 

    public function jsAction() 
    { 
     var_dump($this->_getAllParams()); 
     die(); 
    } 

}

請幫助我。

+0

只是出於好奇,你嘗試過沒有這種死();在checkfiletypeAction函數的末尾? –

+0

是的,我已經嘗試過,但沒有成功 – Surinderpal

回答

1

您傳遞數字作爲你的文件類型,並檢查的話:

;ini file 
routes.resourceCSS.map.fileType = 3 


//controller  
case 'css' : 

變化的情況下匹配數字:

//controller 
case '3' : 
+0

這不是問題。只有當我嘗試將請求轉發給資源操作時,我才面臨問題。如果轉發請求到另一個控制器,它工作正常,但我的要求是在同一控制器上移動請求 – Surinderpal

+0

對不起,我誤解了原始代碼。您正在使用正則表達式路由,並且將第三個括號作爲此參數傳遞。你可以做一個var_dump的fileType嗎?確認到底提供了什麼? –