2011-08-18 45 views
0

我模塊如下:Zend框架模塊路線 - 訪問行爲

modules 
    default 
     controllers 
      IndexController 

    user 
     controllers 
      IndexController 

如果我把默認的IndexController稱爲testAction(),我可以運行在/索引/測試或默認/索引操作的操作/按預期測試。

如果我在用戶IndexController中放入相同的操作,並嘗試在用戶/索引/測試中訪問它,則無法運行testAction()。相反,它運行在同一控制器中的indexAction()。它爲什麼這樣做?

額外的信息:我已經位於應用程序/ CONFIGS /的application.ini ini文件和它的內容是:

[production] 
phpSettings.date.timezone = 'Europe/Belfast' 
phpSettings.display_startup_errors = 0 
phpSettings.display_errors = 0 
includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 

;;namespaces 

;site-wide namespaces 
autoloaderNamespaces[] = "Plugin_" 
autoloaderNamespaces[] = "Helper_" 

;form validators 
autoloaderNamespaces[] = "Validate_" 

;modules 
autoloaderNamespaces[] = "Users_" 
autoloaderNamespaces[] = "Admin_" 

;storage adapters 
resources.db.adapter = mysqli 
resources.db.params.host = localhost 
resources.db.params.username = root 
resources.db.params.password = 
resources.db.params.dbname = vi 

;modules 
;resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules = "" 

;layouts 
resources.layout.layoutPath = APPLICATION_PATH "/layouts" 
resources.layout.layout = master 

;routes 

; /home route 
resources.router.routes.home.route = /home 
resources.router.routes.home.defaults.module = default   
resources.router.routes.home.defaults.controller = index 
resources.router.routes.home.defaults.action = index   

; /content route 
resources.router.routes.static-content.route = /content/:page    
resources.router.routes.static-content.defaults.module = default   
resources.router.routes.static-content.defaults.controller = static-content 
resources.router.routes.static-content.defaults.action = display 


;resources.frontController.plugins.CheckHasAccess = "Plugin_AccessCheck" 


[staging : production] 

[testing : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 

[development : testing] 

我正在開發環境中的應用。

回答

0

OK,我完全忘了東西...我有一個ACL插件運行preDispatch這是增加了一些路由規則!這是導致該問題的代碼片段:

if (! $acl->isAllowed($role, $resouce, $action)) { 
     $request->setModuleName('default') 
       ->setControllerName('auth') 
       ->setActionName('login'); 
    } else { 
     // if already logged in as user.. 
     $request->setModuleName('user') 
       ->setControllerName('index') 
       ->setActionName('index'); 
    } 

所以你看,如果用戶登錄,他們別無選擇,只能在用戶/索引/ index動作結束了!希望這可以爲別人節省同樣的挫折。

+0

另外...不要忘記添加任何新的資源到您的ACL! – Owen

0
resources.modules = "" 

應該

resources.modules = []