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. По умолчанию эта возможность отключена.
Для того, чтоб ее включить, нужно передать параметр
enableJsonExprFinder со значением TRUE:
_helper->json($data, array('enableJsonExprFinder' => true);
]]>
Для использования описанной возможности необходимо передавать
массив в качестве второго аргумента. Кроме указанного параметра, в массив
можно включить и другие, к примеру keepLayouts.
Все параметры из этого массива будут переданы как аргумент при вызове
Zend_Json::encode().
_helper->json($data, array(
'enableJsonExprFinder' => true,
'keepLayouts' => true,
));
]]>