[MANUAL] English:
[zend.git] / documentation / manual / ru / module_specs / Zend_Controller-ActionHelpers-Json.xml
blob35e606935be16181694d455c66d91cafa11081fc
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <sect3 id="zend.controller.actionhelpers.json">
4     <title>JSON</title>
6     <para>
7         JSON быстро становится предпочтительным форматом для использования с
8         AJAX-запросами, которые подразумевают ответы с данными. Синтаксический
9         разбор JSON может производиться сразу на стороне клиента, что приводит
10         к большей производительности.
11     </para>
13     <para>
14         Помощник действий JSON выполняет несколько функций:
15     </para>
17     <itemizedlist>
18         <listitem><para>
19                 Отключает макеты, если они включены.
20         </para></listitem>
22         <listitem>
23             <para>
24                 Опционально в качестве второго аргумента можно передавать
25                 массив опций для <code>Zend_Json::encode()</code>.
26                 Этот масив опций позволяет включать макеты и кодирование
27                 с использованием <classname>Zend_Json_Expr</classname>.
28             </para>
30             <programlisting language="php"><![CDATA[
31 $this->_helper->json($data, array('enableJsonExprFinder' => true));
32 ]]></programlisting>
33         </listitem>
35         <listitem><para>
36                 Отключает ViewRenderer, если он включен.
37         </para></listitem>
39         <listitem><para>
40                 Устанавливает заголовок ответа 'Content-Type' со значением
41                 'application/json'.
42         </para></listitem>
44         <listitem><para>
45                 По умолчанию сразу возвращает ответ, не дожидаясь завершения
46                 выполнения действия.
47         </para></listitem>
48     </itemizedlist>
50     <para>
51         Использование помощника довольно простое - вызывайте его как метод
52         брокера помощников или вызывайте один из его методов
53         <code>encodeJson()</code> или
54         <code>sendJson()</code>:
55     </para>
57     <programlisting language="php"><![CDATA[
58 class FooController extends Zend_Controller_Action
60     public function barAction()
61     {
62         // произведение некоторых действий...
64         // Отправка ответа JSON:
65         $this->_helper->json($data);
67         // или...
68         $this->_helper->json->sendJson($data);
70         // либо получение данных в формате json:
71         $json = $this->_helper->json->encodeJson($data);
72     }
74 ]]>
75     </programlisting>
77     <note>
78         <title>Использование макетов</title>
80         <para>
81             Если вы имеете отдельный макет для ответов JSON (возможно, для того,
82             чтобы включить ответ JSON в некоторый контекст), то на этот случай
83             все методы в помощнике JSON принимает второй, опциональный
84             аргумент - флаг для включения/отключения макетов. Передача булевого
85             значения <constant>TRUE</constant> позволит оставить макеты включенными:
86         </para>
88         <programlisting language="php"><![CDATA[
89 $this->_helper->json($data, true);
90 ]]></programlisting>
92         <para>
93             Вы можете также передавать массив через второй параметр.
94             Этот массив может содержать набор опций, включая опцию
95             <code>keepLayouts</code>:
96         </para>
98         <programlisting language="php"><![CDATA[
99 $this->_helper->json($data, array('keepLayouts' => true);
100 ]]></programlisting>
101     </note>
103     <note>
104         <title>Включение кодирования через Zend_Json_Expr</title>
106         <para>
107             <classname>Zend_Json::encode()</classname> позволяет закодировывать
108             "родные" выражения JSON с использованием объектов
109             <code>Zend_Json_Expr</code>. Эта опция по умолчанию отключена.
110             Для того, чтобы включить эту опцию, передавайте
111             булево значение <constant>TRUE</constant> через опцию
112             <code>enableJsonExprFinder</code>:
113         </para>
115         <programlisting language="php"><![CDATA[
116 $this->_helper->json($data, array('enableJsonExprFinder' => true);
117 ]]></programlisting>
119         <para>
120             При использовании этой опции вы <emphasis>должны</emphasis>
121             передавать массив в качестве второго параметра. Это также
122             позволяет комбинировать опции друг с другом - например, с опцией
123             <code>keepLayouts</code>. Все эти опции потом передаются
124             <classname>Zend_Json::encode()</classname>.
125         </para>
127         <programlisting language="php"><![CDATA[
128 $this->_helper->json($data, array(
129     'enableJsonExprFinder' => true,
130     'keepLayouts'          => true,
132 ]]></programlisting>
133     </note>
134 </sect3>
135 <!--
136 vim:se ts=4 sw=4 et: