2010-10-07 106 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