Zend Framework - не устанавливать макет для контроллера

У меня есть контроллер, который я хочу использовать для сценариев ajax для вызова и установки переменных сеанса, получения информации и т. Д. Как мне установить его так, чтобы этот конкретный контроллер не использовал макет по умолчанию (в частности, без макета), чтобы он мог отправлять сообщения XML/JSON туда и обратно?

3 ответа

Решение

Как и все, что связано с Zend_Framework и Zend_Application, есть несколько способов сделать это, но на последних нескольких чистых Zend-концертах, которые я сделал, я видел людей, использующих следующее (из метода action в вашем контроллере)

$this->_helper->layout()->disableLayout();

Это отключает макет. Если вы хотите отключить свой вид, вы можете использовать

$this->_helper->viewRenderer->setNoRender(true);

опять же, из метода действия в контроллере.

В вашем контроллере...

public function init() {
    if ($this->getRequest()->isXmlHttpRequest()) {
        // no Layout 
        $this->_helper->layout()->disableLayout();
        // no views
        $this->_helper->viewRenderer->setNoRender(true);
    }
}

В вашем действии контроллера, попробуйте

$this->_helper->layout->disableLayout();
Другие вопросы по тегам