|
|
@@ -1,29 +1,32 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!-- EN-Revision: 20765 -->
|
|
|
<!-- Reviewed: no -->
|
|
|
<sect3 id="zend.controller.actionhelpers.json">
|
|
|
<title>JSON</title>
|
|
|
|
|
|
<para>
|
|
|
- JSON быстро становится предпочтительным форматом для использования с
|
|
|
- AJAX-запросами, которые подразумевают ответы с данными. Синтаксический
|
|
|
- разбор JSON может производиться сразу на стороне клиента, что приводит
|
|
|
- к большей производительности.
|
|
|
+ Ответы в формате <acronym>JSON</acronym> становятся все более популярными
|
|
|
+ для работы с <acronym>AJAX</acronym> запросами, которые предполагают отправку
|
|
|
+ и получение массивов данных; <acronym>JSON</acronym> может быть немедленно
|
|
|
+ обработан на стороне клиента, что существенно ускоряет выполнение скриптов.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Помощник действий JSON выполняет несколько функций:
|
|
|
+ Помощник действий <acronym>JSON</acronym> выполняет несколько функций:
|
|
|
</para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
- <listitem><para>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
Отключает макеты, если они включены.
|
|
|
- </para></listitem>
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
|
|
|
<listitem>
|
|
|
<para>
|
|
|
- Опционально в качестве второго аргумента можно передавать
|
|
|
- массив опций для <code>Zend_Json::encode()</code>.
|
|
|
- Этот масив опций позволяет включать макеты и кодирование
|
|
|
+ Альтернативно, можно передавать массив параметров, который будет использован
|
|
|
+ в качестве второго аргумента для <methodname>Zend_Json::encode()</methodname>.
|
|
|
+ Передавая массив параметров, можно включить макеты и кодирование
|
|
|
с использованием <classname>Zend_Json_Expr</classname>.
|
|
|
</para>
|
|
|
|
|
|
@@ -32,26 +35,31 @@ $this->_helper->json($data, array('enableJsonExprFinder' => true));
|
|
|
]]></programlisting>
|
|
|
</listitem>
|
|
|
|
|
|
- <listitem><para>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
Отключает ViewRenderer, если он включен.
|
|
|
- </para></listitem>
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
|
|
|
- <listitem><para>
|
|
|
- Устанавливает заголовок ответа 'Content-Type' со значением
|
|
|
- 'application/json'.
|
|
|
- </para></listitem>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ Присваивает заголовку ответа 'Content-Type' значение
|
|
|
+ '<filename>application/json</filename>'.
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
|
|
|
- <listitem><para>
|
|
|
- По умолчанию сразу возвращает ответ, не дожидаясь завершения
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ По умолчанию немедленно возвращает ответ, не дожидаясь завершения
|
|
|
выполнения действия.
|
|
|
- </para></listitem>
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<para>
|
|
|
- Использование помощника довольно простое - вызывайте его как метод
|
|
|
- брокера помощников или вызывайте один из его методов
|
|
|
- <code>encodeJson()</code> или
|
|
|
- <code>sendJson()</code>:
|
|
|
+ Использование: помощник может быть вызван как метод брокера помощников действий
|
|
|
+ или посредством вызова одного из его методов <methodname>encodeJson()</methodname>
|
|
|
+ или <methodname>sendJson()</methodname>:
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -59,30 +67,29 @@ class FooController extends Zend_Controller_Action
|
|
|
{
|
|
|
public function barAction()
|
|
|
{
|
|
|
- // произведение некоторых действий...
|
|
|
+ // выполнить некоторые действия...
|
|
|
|
|
|
- // Отправка ответа JSON:
|
|
|
+ // отправить ответ в формате JSON
|
|
|
$this->_helper->json($data);
|
|
|
-
|
|
|
// или...
|
|
|
$this->_helper->json->sendJson($data);
|
|
|
|
|
|
- // либо получение данных в формате json:
|
|
|
+ // или получить ответ в формате json:
|
|
|
$json = $this->_helper->json->encodeJson($data);
|
|
|
}
|
|
|
}
|
|
|
-]]>
|
|
|
- </programlisting>
|
|
|
+]]></programlisting>
|
|
|
|
|
|
<note>
|
|
|
<title>Использование макетов</title>
|
|
|
|
|
|
<para>
|
|
|
- Если вы имеете отдельный макет для ответов JSON (возможно, для того,
|
|
|
- чтобы включить ответ JSON в некоторый контекст), то на этот случай
|
|
|
- все методы в помощнике JSON принимает второй, опциональный
|
|
|
- аргумент - флаг для включения/отключения макетов. Передача булевого
|
|
|
- значения <constant>TRUE</constant> позволит оставить макеты включенными:
|
|
|
+ В случае необходимости использования макета для возвращения ответов
|
|
|
+ в формате <acronym>JSON</acronym> (например, для возвращения <acronym>JSON</acronym>
|
|
|
+ как части некоторого контекста), при вызове любого из методов помощника
|
|
|
+ <acronym>JSON</acronym> нужно передавать второй, необязательный, аргумент:
|
|
|
+ флаг для включения/отключения макетов. Передача булевого значения
|
|
|
+ <constant>TRUE</constant> оставит макеты включенными:
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -90,9 +97,8 @@ $this->_helper->json($data, true);
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Вы можете также передавать массив через второй параметр.
|
|
|
- Этот массив может содержать набор опций, включая опцию
|
|
|
- <code>keepLayouts</code>:
|
|
|
+ Альтернативно, в качестве второго аргумента можно передавать массив параметров,
|
|
|
+ среди которых и <emphasis>keepLayouts</emphasis>:
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -101,15 +107,14 @@ $this->_helper->json($data, array('keepLayouts' => true);
|
|
|
</note>
|
|
|
|
|
|
<note>
|
|
|
- <title>Включение кодирования через Zend_Json_Expr</title>
|
|
|
+ <title>Включение кодирования с использованием Zend_Json_Expr</title>
|
|
|
|
|
|
<para>
|
|
|
- <classname>Zend_Json::encode()</classname> позволяет закодировывать
|
|
|
- "родные" выражения JSON с использованием объектов
|
|
|
- <code>Zend_Json_Expr</code>. Эта опция по умолчанию отключена.
|
|
|
- Для того, чтобы включить эту опцию, передавайте
|
|
|
- булево значение <constant>TRUE</constant> через опцию
|
|
|
- <code>enableJsonExprFinder</code>:
|
|
|
+ Метод <methodname>Zend_Json::encode()</methodname> позволяет кодировать "родные"
|
|
|
+ <acronym>JSON</acronym> выражения при помощи объектов класса
|
|
|
+ <classname>Zend_Json_Expr</classname>. По умолчанию эта возможность отключена.
|
|
|
+ Для того, чтоб ее включить, нужно передать параметр
|
|
|
+ <emphasis>enableJsonExprFinder</emphasis> со значением <constant>TRUE</constant>:
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -117,11 +122,11 @@ $this->_helper->json($data, array('enableJsonExprFinder' => true);
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- При использовании этой опции вы <emphasis>должны</emphasis>
|
|
|
- передавать массив в качестве второго параметра. Это также
|
|
|
- позволяет комбинировать опции друг с другом - например, с опцией
|
|
|
- <code>keepLayouts</code>. Все эти опции потом передаются
|
|
|
- <classname>Zend_Json::encode()</classname>.
|
|
|
+ Для использования описанной возможности <emphasis>необходимо</emphasis> передавать
|
|
|
+ массив в качестве второго аргумента. Кроме указанного параметра, в массив
|
|
|
+ можно включить и другие, к примеру <emphasis>keepLayouts</emphasis>.
|
|
|
+ Все параметры из этого массива будут переданы как аргумент при вызове
|
|
|
+ <methodname>Zend_Json::encode()</methodname>.
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|