Перенаправить на другой вид в контроллере

Это моя структура каталогов 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.

см документацию по этому вопросу.

Другие вопросы по тегам