Model view controller 在使用Zend Framework进行预剥离之前,转发到其他操作/控制器
我有点像Model view controller 在使用Zend Framework进行预剥离之前,转发到其他操作/控制器,model-view-controller,zend-framework,routing,controller,dispatcher,Model View Controller,Zend Framework,Routing,Controller,Dispatcher,我有点像 <?php class AccountController extends Zend_Controller_Action { public function init() { if(!Zend_Auth::getInstance()->hasIdentity()) { //need to forward to the auth action in another controller, //in
<?php
class AccountController extends Zend_Controller_Action
{
public function init()
{
if(!Zend_Auth::getInstance()->hasIdentity()) {
//need to forward to the auth action in another controller,
//instead of dispatching to whatever action it would be dispatched to
}
}
...
也不起作用。我试图清除参数,但仍然一无所获。有多个参数可用于_forward
$this->_forward($action, $controller, $module, $params)
如果控制器为null,则操作将在被调用的控制器内。如果模块为空,则控制器将位于被调用的模块内
param是一个参数数组。我倾向于传递
$this->\u请求->getParams()
转发有多个参数
$this->_forward($action, $controller, $module, $params)
如果控制器为null,则操作将在被调用的控制器内。如果模块为空,则控制器将位于被调用的模块内
param是一个参数数组。我倾向于传递$this->\u请求->getParams()
将其放入
您可能希望重定向而不是“转发”,您可以使用重定向器帮助程序
$this->_helper->redirector('action', 'controller', 'module');
请注意,这是redirector helper的基本用法,您可能还希望使用允许您使用自定义路由的goToRoute()方法。以下是该方法的签名:
public function gotoRoute(array $urlOptions = array(), $name = null,
$reset = false, $encode = true)
其用法类似于视图帮助程序url()
将其放入
您可能希望重定向而不是“转发”,您可以使用重定向器帮助程序
$this->_helper->redirector('action', 'controller', 'module');
请注意,这是redirector helper的基本用法,您可能还希望使用允许您使用自定义路由的goToRoute()方法。以下是该方法的签名:
public function gotoRoute(array $urlOptions = array(), $name = null,
$reset = false, $encode = true)
其用法类似于视图助手
url()
,正如我所说,在这种情况下,我不能在init()中使用$this->\u forward()。正如我所说,在这种情况下,我不能在init()中使用$this->\u forward()。请记住,Zend框架是一个模块化系统。此重定向器仅在使用默认路由(我不是)时工作。我正在重定向,但我不能只是重定向,因为我也在做其他事情(这就是为什么我还有另一个动作)。也就是说,你的方式奏效了。但是顺便说一句,这是Zend_Controller_plugin_Abstract,不是Zend_Front_Controller_plugin_Abstract。是的,对不起,我编辑了我的答案以更正打字错误。我还添加了一条关于重定向器的评论,请记住Zend框架是一个模块化系统。此重定向器仅在使用默认路由(我不是)时工作。我正在重定向,但我不能只是重定向,因为我也在做其他事情(这就是为什么我还有另一个动作)。也就是说,你的方式奏效了。但是顺便说一句,这是Zend_Controller_plugin_Abstract,不是Zend_Front_Controller_plugin_Abstract。是的,对不起,我编辑了我的答案以更正打字错误。我还添加了关于重定向器的评论。