При создание вида, который возвращает JSON , важно также установить соответствующий заголовок ответа. Помощник вида JSON как раз и делает это. Так же, по умолчанию он отключает вывод макета (layout) если он включен, так как макеты обычно не используются при ответах в формате JSON.
Отправляет такой заголовок:
Content-Type: application/json
Большинство AJAX библиотек ищет именно такой заголовок, что бы определить, как и что обрабатывать.
Помощник JSON используется таким образом:
<?php echo $this->json($this->data) ?>
Важно: Для поддержки макетов и установки кодировки используйте Zend\Json\Expr. Каждый метод помощника JSON может принимать второй необязательный аргумент. Это логическое значение, отвечающее за включение (TRUE) или отключение (FALSE) макета/ Так же может быть массивом с необходимыми опциями, который передается в Zend\Json::encode() и используется для кодировки данных.
Если второй параметр будет «TRUE» то макеты сохранятся. Что бы сохранить макеты, когда второй параметр массив, нужно указать ключ «keepLayouts», а значение установить в «TRUE».
// Boolean true as second argument enables layouts: echo $this->json($this->data, true); // Or boolean true as "keepLayouts" key: echo $this->json($this->data, array('keepLayouts' => true));
Zend\Json::encode() позволяет кодировать родные выражения JSON используя объект Zend\Json\Expr. Эта опция отключена по умолчанию. Для включения этой возможности передайте значение «TRUE» в ключ «enableJsonExprFinder» массива опций:
<?php echo $this->json($this->data, array( 'enableJsonExprFinder' => true, 'keepLayouts' => true, )) ?>