重定向到控制器中的不同视图

时间:2012-08-12 11:08:34

标签: php zend-framework zend-framework-mvc

这是我的Zend Framework目录结构(仅包含您需要的内容):

-Controllers
    -HomeController.php
    -IndexController.php
-Views
    -scripts
        -home
            -index.phtml
        -index
            -index.phtml

IndexController我想自动将它们重定向到主视图。

我如何实现这一目标?

这是我到目前为止所尝试的:

header('/application/views/home');

我想完全重定向到不同的视图和控制器。在同一个控制器中没有不同的动作。

2 个答案:

答案 0 :(得分:2)

你有一些选择:

使用_redirect action utility method(非常常见)

public function indexAction() {
    $this->_redirect('/application/views/home');
}

或使用_forward操作utility method只执行请求的操作而不实际重定向

public function indexAction() {
        $this->_forward('index', 'home');
    }

你可以使用动作助手redirector,类似于_redirect但有更多选项。

public function indexAction() {
            $this->getHelper('Redirector')->gotoSimple('index','home');
        }

这个内容涵盖了在控制器内部重定向的基础知识,如果您想从home/index.phtml实际呈现/idex/index,可以使用viewrenderer action helper

我会让你解开这些秘密。

答案 1 :(得分:1)

如果您想在当前操作中渲染另一个操作,可以在您的操作中采用以下方式:

$this->render('actionName');

或者,明确设置模板以呈现

$this->renderScript('path/to/viewscript.phtml');

更新:再次阅读您的问题我想您要使用

  

_forward($action, $controller = null, $module = null, array $params = null): 执行其他操作。如果在preDispatch()中调用,则将跳过当前请求的操作以支持新操作。否则,在处理当前操作后,将执行_forward()中请求的操作。

  

_redirect($url, array $options = array()): 重定向到其他位置。此方法采用URL和一组可选选项。默认情况下,它执行HTTP 302重定向。

在此问题上查看documentation