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。是的,对不起,我编辑了我的答案以更正打字错误。我还添加了关于重定向器的评论。