2010-10-07 104 views
1

在我的Zend框架應用程序,我的路線和默認值,如:Zend框架模塊,控制器,動作具體路線

resources.router.routes.plain.defaults.module = "index" 
resources.router.routes.plain.defaults.controller = "index" 
resources.router.routes.plain.defaults.action = "index" 

我希望能夠改變默認路由,任何模塊或控制器或者動作 例如

假設這個模塊/控制器/動作結構:

content --- article --- read 
        --- write 
     --- news --- list 
        --- write 
user --- auth --- signin 
        --- signout 
     --- access --- check 
        --- update 
在這個架構中

的模塊=內容我想 控制器=文章是默認的控制器和 行動=讀是默認操作。
如果選擇控制器=新聞則行動=列表變成默認操作

的模塊=用戶我想 控制器= AUTH是默認的控制器和行動=登入時是默認操作。 如果controller = access被選中,那麼action = check變成默認操作。

那麼是否有可能在application.ini中做到這一點?那麼這個例子呢?

在此先感謝。

回答

0

隨想:


你可以定義指向的具體行動作爲默認每個模塊的路線。

resources.router.routes.user.route = "user/:controller/:action/*" 
resources.router.routes.user.defaults.module = "user" 
resources.router.routes.user.defaults.controller = "auth" 
resources.router.routes.user.defaults.action = "signin" 

你也可以定義一個Module_IndexController::preDispatch()User_AccessController::indexAction()使用_forward將請求發送到正確的 「默認」:

// delaing with the redirect in preDispatch 
// will affect all requests to this controller 
class User_IndexController extends Zend_Controller_Action { 
    public function preDispatch() { 
    // send to default location for User Module: 
    $this->_forward('signin', 'auth') 
    } 
} 

// dealing with the redirect in indexAction: 
// will only affect requests that go to the "index" action 
class User_AccessController extends Zend_Controller_Action { 
    public function indexAction() { 
    // send to default location for User Module: 
    $this->_forward('check') 
    } 
} 

Zend Framework Documentation - Controller Utility Methods

_forward($action, $controller = null, $module = null, array $params = null) :執行另一個行動。如果在preDispatch()中調用,則當前請求的操作將被跳過以支持新操作。否則,在處理完當前動作後,將執行_forward()中要求的動作。

+0

我曾經想過在動作中寫前進,但我想在動作中編寫更少的代碼,在配置文件中做更多的事情。我會嘗試ini風格解決與鏈接我的路線的另一個問題:) – carlos 2010-10-07 16:36:26

+0

另一個關於鏈路由的問題我發佈了: http://stackoverflow.com/questions/3884716/zend-framework-route-chaining-in-application- ini 謝謝.. – carlos 2010-10-07 18:34:12