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();