Ответ 1
Это может не ответить на ваш вопрос напрямую (что вы, похоже, решили в любом случае), но чтобы отключить макет и предоставить другое представление для запросов AJAX, подумайте об использовании AjaxContext помощник действий.
У меня есть следующий контроллер, который среди других методов имеет следующий:
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
Это может не ответить на ваш вопрос напрямую (что вы, похоже, решили в любом случае), но чтобы отключить макет и предоставить другое представление для запросов AJAX, подумайте об использовании AjaxContext помощник действий.
Добавьте это внутри своего контроллера:
public function preDispatch(){
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
}
в zf2
public function indexAction()
{
echo "json"
return $this->getResponse();
}