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();
    }
Другие вопросы по тегам