Как отключить вывод темплейта в контроллере ZF2
В некоторых ситуациях нужно выключить вывод чего либо в экшене контроллера либо вывести совсем не то что хочет сам зенд (в частности темплейт).
Вариант №1: Не возвращать ничего
Просто вернем false из экшена и зенд отстанет и не будет просить создать темплейт:
class AjaxController extends \Zend\Mvc\Controller\AbstractActionController { public function testAction() { return false; } }
Вариант №2: Вернуть JSON
Этот вариант катит когда нужно вместо темплейта вернуть JSON
class AjaxController extends \Zend\Mvc\Controller\AbstractActionController { public function testAction() { return new \Zend\View\Model\JsonModel(array('a'=>'b')); } }
В результате мы получим в контенте страницы следующее:
{"a":"b"}
Вариант №3: Вернуть кастомный резпонз, например 404-й
class AjaxController extends \Zend\Mvc\Controller\AbstractActionController { public function testAction() { $response = $this->getResponse(); $response->setStatusCode(404); $response->setContent("Page not found!"); return $response; } }
Есть еще и другие способы — но эти три перечисленые выше используются чаще всего.