JSON
JSON быстро становится предпочтительным форматом для использования с
AJAX-запросами, которые подразумевают ответы с данными. Синтаксический
разбор JSON может производиться сразу на стороне клиента, что приводит
к большей производительности.
Помощник действий JSON выполняет несколько функций:
Отключает макеты, если они включены.
Опционально в качестве второго аргумента можно передавать
массив опций для Zend_Json::encode().
Этот масив опций позволяет включать макеты и кодирование
с использованием Zend_Json_Expr.
_helper->json($data, array('enableJsonExprFinder' => true));
]]>
Отключает ViewRenderer, если он включен.
Устанавливает заголовок ответа 'Content-Type' со значением
'application/json'.
По умолчанию сразу возвращает ответ, не дожидаясь завершения
выполнения действия.
Использование помощника довольно простое - вызывайте его как метод
брокера помощников или вызывайте один из его методов
encodeJson() или
sendJson():
_helper->json($data);
// или...
$this->_helper->json->sendJson($data);
// либо получение данных в формате json:
$json = $this->_helper->json->encodeJson($data);
}
}
]]>
Использование макетов
Если вы имеете отдельный макет для ответов JSON (возможно, для того,
чтобы включить ответ JSON в некоторый контекст), то на этот случай
все методы в помощнике JSON принимает второй, опциональный
аргумент - флаг для включения/отключения макетов. Передача булевого
значения TRUE позволит оставить макеты включенными:
_helper->json($data, true);
]]>
Вы можете также передавать массив через второй параметр.
Этот массив может содержать набор опций, включая опцию
keepLayouts:
_helper->json($data, array('keepLayouts' => true);
]]>
Включение кодирования через Zend_Json_Expr
Zend_Json::encode() позволяет закодировывать
"родные" выражения JSON с использованием объектов
Zend_Json_Expr. Эта опция по умолчанию отключена.
Для того, чтобы включить эту опцию, передавайте
булево значение TRUE через опцию
enableJsonExprFinder:
_helper->json($data, array('enableJsonExprFinder' => true);
]]>
При использовании этой опции вы должны
передавать массив в качестве второго параметра. Это также
позволяет комбинировать опции друг с другом - например, с опцией
keepLayouts. Все эти опции потом передаются
Zend_Json::encode().
_helper->json($data, array(
'enableJsonExprFinder' => true,
'keepLayouts' => true,
));
]]>