Блог

PHP/Zend Framework: правильно вернуть JSON в Zend Controller’s Action

Мы можем выдумывать велосипед, как вернуть JSON данные в Zend Framework. Но нужно вернуть правильно. Дан массив, из модели или любой другой набор данных, и вы кодируете его в JSON с помощью Zend_Json::encode($enc).

В целом JSON представляет собой специально отформатированную строку с разным набором данных. Боль про JSON можно узнать в Wikipedia.

Таким образом, вы можете просто установить его в переменную вида и передать его в представлении и вывести без Layouts, но это лишнее и не нужное. Можно вывести просто строку и остановить скрипт через (exit() / die()). Это как-то тоже не правильно. Правильным решением будет вернуть документ не как text/html, а как application/json, средствами Zend Framework.  Но зачем много разглагольствовать пусть код за меня все скажет.

public function jsonAction() {
   $model = new Application_Model();
   $select = $model->getData();

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

   $response = $this->getResponse();

   $response->setHeader('Content-type', 'application/json;charset=UTF-8', true);
   return $response->setBody(Zend_Json::encode(array('data'=>$select)));
}