在我的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中执行此操作吗?这个例子怎么样?
提前致谢。
答案 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()
中请求的操作。