<Mr.ElectroNick>
/* personal website */

Как отключить вывод темплейта в контроллере 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;
    }
}

Есть еще и другие способы — но эти три перечисленые выше используются чаще всего.