Zend框架模块,控制器,动作特定路由

时间:2010-10-07 12:26:59

标签: zend-framework routes zend-route

在我的zend框架应用程序中,我有路由和默认值,如:

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

我希望能够更改任何模块或控制器或操作的默认路由 e.g。

我们假设这个模块/控制器/动作结构:

content --- article --- read
                    --- write
        --- news    --- list
                    --- write
user    --- auth    --- signin
                    --- signout
        --- access  --- check
                    --- update

在这个架构中,

for module =我想要的内容 controller = article是默认控制器和 action =读取默认操作。
如果选择controller = news,则action = list将成为默认操作

for module = user我想要的 controller = auth是默认控制器,action = signin是默认操作。 如果选择了controller = access,则action = check将成为默认操作。

那么可以在application.ini中执行此操作吗?这个例子怎么样?

提前致谢。

1 个答案:

答案 0 :(得分: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() 中请求的操作。