这是我的Zend Framework目录结构(仅包含您需要的内容):
-Controllers
-HomeController.php
-IndexController.php
-Views
-scripts
-home
-index.phtml
-index
-index.phtml
在IndexController
我想自动将它们重定向到主视图。
我如何实现这一目标?
这是我到目前为止所尝试的:
header('/application/views/home');
我想完全重定向到不同的视图和控制器。在同一个控制器中没有不同的动作。
答案 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。