Zend - как отключить макет на заданное действие? - PullRequest
15 голосов
/ 26 ноября 2010

У меня есть следующий контроллер, который, помимо других методов, имеет этот:

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 ]

22 голосов
/ 16 ноября 2012

Добавьте это в свой контроллер:

public function preDispatch(){
        $this->_helper->layout()->disableLayout(); 
        $this->_helper->viewRenderer->setNoRender(true);
    }
5 голосов
/ 29 ноября 2010

Это может не дать прямого ответа на ваш вопрос (который вы, похоже, решили в любом случае), но чтобы отключить макет и предоставить другое представление для запросов AJAX, рассмотрите возможность использования помощника действий AjaxContext .

0 голосов
/ 06 мая 2015

в zf2

 public function indexAction()
    {    
        echo "json"
        return $this->getResponse();
    }
...