Вы можете отключить макет и просмотр, используя в вашем действии:
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender();
Для меня echo
с контроллеров - это не правильный способ сделать что-то. Шаблон MVC используется для разделения логики для просмотра. Вы можете просто отключить макет и назначить вашему представлению json для рендеринга следующим образом:
$this->view->json = $json;
и по вашему мнению:
<?= $this->json ?>
Если ваш запрос исходит из сценария Ajax, вы даже можете сделать вещи более привлекательными, используя помощник действий AjaxContext
. Это позволит вам использовать одно действие, например, для разных типов запросов, и отобразить правильное представление в соответствии с типом запроса (Ajax и т. Д.).