/** * Encode data as JSON, disable layouts, and set response header * * If $keepLayouts is true, does not disable layouts. * * @param mixed $data * @param bool $keepLayouts * NOTE: if boolean, establish $keepLayouts to true|false * if array, admit params for Zend_Json::encode as enableJsonExprFinder=>true|false * this array can contains a 'keepLayout'=>true|false * that will not be passed to Zend_Json::encode method but will be used here * @return string|void */ public function __invoke($data, $keepLayouts = false) { $options = array(); if (is_array($keepLayouts)) { $options = $keepLayouts; $keepLayouts = array_key_exists('keepLayouts', $keepLayouts) ? $keepLayouts['keepLayouts'] : false; unset($options['keepLayouts']); } $data = JsonFormatter::encode($data, null, $options); if (!$keepLayouts && $this->layout instanceof Layout) { $this->layout->disableLayout(); } if ($this->response instanceof Response) { $headers = $this->response->headers(); $headers->addHeaderLine('Content-Type', 'application/json'); } return $data; }
/** * @group ZF-5891 */ public function testSetLayoutWithDisabledFlag() { $layout = new Layout\Layout(); $layout->disableLayout(); $layout->setLayout('foo', false); $this->assertEquals('foo', $layout->getLayout()); $this->assertFalse($layout->isEnabled()); }