/** * Create JSON response * * Encodes and returns data to JSON. Content-Type header set to * 'application/json', and disables layouts and viewRenderer (if being * used). * * @param mixed $data * @param boolean $keepLayouts * @param boolean|array $keepLayouts * NOTE: if boolean, establish $keepLayouts to true|false * if array, admit params for Zend_Json::encode as enableJsonExprFinder=>true|false * if $keepLayouts and parmas for Zend_Json::encode are required * then, the array can contains a 'keepLayout'=>true|false * that will not be passed to Zend_Json::encode method but will be passed * to Zend_View_Helper_Json * @throws EvHttp_Controller_Action_Helper_Json * @return string */ public function encodeJson($data, $keepLayouts = false) { /** * @see Zend_View_Helper_Json */ require_once 'Zend/View/Helper/Json.php'; $jsonHelper = new Zend_View_Helper_Json(); $data = $jsonHelper->json($data, $keepLayouts); if (!$keepLayouts) { /** * @see EvHttp_Controller_Action_HelperBroker */ require_once 'EvHttp/Controller/Action/HelperBroker.php'; EvHttp_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true); } return $data; }
/** * Prepare data for autocompletion * * @param mixed $data * @param boolean $keepLayouts * @return string */ public function prepareAutoCompletion($data, $keepLayouts = false) { if (!$data instanceof Zend_Dojo_Data) { require_once 'Zend/Dojo/Data.php'; $items = array(); foreach ($data as $key => $value) { $items[] = array('label' => $value, 'name' => $value); } $data = new Zend_Dojo_Data('name', $items); } if (!$keepLayouts) { require_once 'EvHttp/Controller/Action/HelperBroker.php'; EvHttp_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true); require_once 'Zend/Layout.php'; $layout = Zend_Layout::getMvcInstance(); if ($layout instanceof Zend_Layout) { $layout->disableLayout(); } } $response = EvHttp_Controller_Front::getInstance()->getResponse(); $response->setHeader('Content-Type', 'application/json'); return $data->toJson(); }
/** * Encode data to JSON * * @param mixed $data * @param bool $keepLayouts * @throws EvHttp_Controller_Action_Exception * @return string */ public function encodeJson($data, $keepLayouts = false) { if ($this->validateData($data)) { return EvHttp_Controller_Action_HelperBroker::getStaticHelper('Json')->encodeJson($data, $keepLayouts); } /** * @see EvHttp_Controller_Action_Exception */ require_once 'EvHttp/Controller/Action/Exception.php'; throw new EvHttp_Controller_Action_Exception('Invalid data passed for autocompletion'); }
/** * Retrieve ViewRenderer * * @return EvHttp_Controller_Action_Helper_ViewRenderer Provides a fluent interface */ protected function _getViewRenderer() { if (null === $this->_viewRenderer) { $this->_viewRenderer = EvHttp_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); } return $this->_viewRenderer; }