Перенаправить на другой вид в контроллере
Это моя структура каталогов Zend Framework (включает только то, что вам нужно):
-Controllers
-HomeController.php
-IndexController.php
-Views
-scripts
-home
-index.phtml
-index
-index.phtml
в IndexController
Я хочу автоматически перенаправить их на домашний вид.
Как мне этого добиться?
Это то, что я пробовал до сих пор:
header('/application/views/home');
Я хочу перенаправить на другое представление и контроллер вообще. Не другое действие в одном контроллере.
2 ответа
У вас есть несколько вариантов:
использовать метод служебной программы _redirect (очень часто)
public function indexAction() {
$this->_redirect('/application/views/home');
}
или используйте метод служебной программы _forward, чтобы просто выполнить запрошенное действие без фактического перенаправления
public function indexAction() {
$this->_forward('index', 'home');
}
Вы можете использовать перенаправитель действия помощника, похожий на _redirect, но имеющий гораздо больше опций.
public function indexAction() {
$this->getHelper('Redirector')->gotoSimple('index','home');
}
В этом разделе рассматриваются основы перенаправления внутри контроллера, если вы хотите на самом деле сделать home/index.phtml
от /idex/index
Вы можете использовать помощник действий viewrenderer.
Я позволю вам открыть эти секреты.
Если вы хотите визуализировать другое действие внутри текущего действия, это возможно в вашем действии следующим образом:
$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.
см документацию по этому вопросу.