1

这是我的 Zend Framework 目录结构(只包括你需要的):

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

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

我如何实现这一目标?

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

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

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

4

2 回答 2

2

你有一些选择:

使用 _redirect 操作实用程序方法(非常常见)

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

或使用 _forward 操作实用程序方法只执行请求的操作而不实际重定向

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

你可以使用 action helper redirector,类似于 _redirect 但有更多选项。

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

这涵盖了控制器内部重定向的基础知识,如果你想实际渲染home/index.phtml/idex/index可以使用viewrenderer action helper

我会让你解开那些秘密。

于 2012-08-12T11:22:50.707 回答
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 重定向。

请参阅有关此问题的文档。

于 2012-08-12T11:11:55.650 回答