Zend - как отключить макет на заданное действие?
У меня есть следующий контроллер, который, среди других методов, имеет этот:
class EquipasController extends OccControllerAction {
public function listaAction()
{
$this->_helper->viewRenderer->setNoRender(true);
$this->_helper->layout->disableLayout();
}
}
Я ожидал, что, когда я делаю: http://www.example.com/equipas/lista/
контроллер выполнится, и я не увижу рендеринг макета в моем окне просмотра.
Однако это не так. Я получил мою домашнюю страницу.
Где в ZF мы обычно говорим: если действия не существует, должна появиться домашняя страница?
Примечание: если вместо: http://www.example.com/equipas/lista/
Я делаю, http://www.example.com/equipas/adasdas21232131/, который не существует.
Я получаю тот же рендеринг домашней страницы.
Что может быть причиной такого поведения?
A Zend Newbie, MEM
3 ответа
Это может не дать прямого ответа на ваш вопрос (который, по-видимому, вы все-таки решили), но чтобы отключить макет и предоставить другое представление для запросов AJAX, рассмотрите возможность использования помощника действий AjaxContext.
Добавьте это внутри вашего контроллера:
public function preDispatch(){
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
}
В zf2
public function indexAction()
{
echo "json"
return $this->getResponse();
}