[MANUAL] English:
[zend.git] / documentation / manual / pl / module_specs / Zend_View-Introduction.xml
blobc283f5c216373c6fa23bea1a0a36c51c0e888e89
1 <sect1 id="zend.view.introduction">
3     <title>Wprowadzenie</title>
5     <para>
6         Zend_View jest klasą zapewniającą obsługę części widoku ("view")
7         we wzorcu projektowym MVC (model-view-controller). Istnieje ona
8         w celu oddzielenia wyglądu aplikacji od kontrolerów i danych.
9         Zapewnia system skryptów helperów i filtrów.
10     </para>
12     <para>
13         Zend_View jest bardzo prostym systemem; możesz użyć PHP jako
14         jezyka szablonów lub utworzyć instancje innych systemów szablonów,
15         a następnie manipulować nimi wewnątrz skryptu widoku.
16     </para>
18     <para>
19         Zasadniczo użycie Zend_View składa się z dwóch kroków:
21         1. Twój skrypt kontrolera tworzy instancję klasy
22         Zend_View i przekazuje zmienne do tej instancji.
24         2. Kontroler mówi obiektowi Zend_View aby przetworzył określony skrypt
25         widoku, skutkiem tego jest wygenerowanie wyjściowego widoku.
26     </para>
28     <sect2 id="zend.view.introduction.controller">
30         <title>Skrypt kontrolera</title>
32         <para>
33             Aby pokazać prosty przykład załóżmy, że kontroler ma dane w postaci
34             listy książek i chcemy aby były one przetworzone jako widok. Skrypt
35             kontrolera mógłby wyglądać tak:
36         </para>
38         <programlisting role="php"><![CDATA[
39 // użyjmy modelu aby uzyskać dane o autorach książek i ich tytułach
40 $data = array(
41     array(
42         'author' => 'Hernando de Soto',
43         'title' => 'The Mystery of Capitalism'
44     ),
45     array(
46         'author' => 'Henry Hazlitt',
47         'title' => 'Economics in One Lesson'
48     ),
49     array(
50         'author' => 'Milton Friedman',
51         'title' => 'Free to Choose'
52     )
55 // przekażmy dane o książkach do instancji Zend_View
56 Zend_Loader::loadClass('Zend_View');
57 $view = new Zend_View();
58 $view->books = $data;
60 // wygenerujemy wyjściowy widok o nazwie "booklist.php"
61 echo $view->render('booklist.php');
62 ]]>
63         </programlisting>
65     </sect2>
67     <sect2 id="zend.view.introduction.view">
69         <title>Skrypt widoku</title>
71         <para>
72             Teraz potrzebujemy skryptu widoku "booklist.php". Jest
73             to skrypt PHP jak każdy inny, z jednym wyjątkiem: jest on wykonywany
74             w przestrzeni instancji Zend_View, co oznacza, że odnosi się on do
75             właściwości i metod klasy Zend_View za pomocą $this. (Zmienne
76             przekazane do tej instancji przez kontroler sa publicznymi
77             właściwościami instancji Zend_View.) Więc bardzo prosty skrypt
78             mógłby wyglądać tak:
79         </para>
81         <programlisting role="php"><![CDATA[
82 if ($this->books): ?>
84     <!-- Tabela z książkami. -->
85     <table>
86         <tr>
87             <th>Autor</th>
88             <th>Tytuł</th>
89         </tr>
91         <?php foreach ($this->books as $key => $val): ?>
92         <tr>
93             <td><?php echo $this->escape($val['author']) ?></td>
94             <td><?php echo $this->escape($val['title']) ?></td>
95         </tr>
96         <?php endforeach; ?>
98     </table>
100 <?php else: ?>
102     <p>Nie ma żadnych książek do wyświetlenia.</p>
104 <?php endif;
106         </programlisting>
108         <para>
109             Zauważ, że używamy metody "escape()" aby przefiltrować zmienne
110             wyjściowe.
111         </para>
113     </sect2>
115     <sect2 id="zend.view.introduction.options">
116         <title>Opcje</title>
118         <para>
119             <code>Zend_View</code> posiada kilka opcji, które mogą być użyte do
120             skonfigurowania zachowania skryptów widoków.
121         </para>
123         <itemizedlist>
124             <listitem>
125                 <para>
126                     <code>basePath:</code> określa bazową ścieżkę, wewnątrz
127                     której znajdują się skrypty widoków, klasy helperów oraz
128                     klasy filtrów. Zakładane jest, że struktura katalogów
129                     wygląda tak:
130                 </para>
132                 <programlisting role="php"><![CDATA[
133 base/path/
134     helpers/
135     filters/
136     scripts/
138                 </programlisting>
140                 <para>
141                     Ta opcja może być ustawiona za pomocą metody
142                     <code>setBasePath()</code>, metody <code>addBasePath()</code>,
143                     lub jako opcja <code>basePath</code> przekazana do
144                     konstruktora.
145                 </para>
146             </listitem>
148             <listitem><para>
149                 <code>encoding:</code> określa kodowanie znaków, które ma być
150                 użyte przez metody <code>htmlentities()</code>,
151                 <code>htmlspecialchars()</code> oraz w innych operacjach.
152                 Domyślnie jest to ISO-8859-1 (latin1). Może być ustawione za
153                 pomocą metody <code>setEncoding()</code> lub jako opcja
154                 <code>encoding</code> konstruktora.
155             </para></listitem>
157             <listitem><para>
158                 <code>escape:</code> określa funkcję używaną przez metodę
159                 <code>escape()</code>. Może być ustawiona za pomocą metody
160                 <code>setEscape()</code> lub za pomocą opcji <code>escape</code>
161                 konstruktora.
162             </para></listitem>
164             <listitem><para>
165                 <code>filter:</code> określa filtr, który ma być użyty po
166                 zrenderowaniu skryptu widoku. Może być ustawiony za pomocą
167                 metody <code>setFilter()</code>, metody <code>addFilter()</code>,
168                 lub za pomocą opcji <code>filter</code> konstruktora.
169             </para></listitem>
171             <listitem><para>
172                 <code>strictVars:</code> zmusza <code>Zend_View</code> do
173                 wyświetlania not i ostrzeżeń, wtedy gdy zdarzy się próba
174                 uzyskania dostępu do niezainicjowanych zmiennych widoków.
175                 Może to być ustawione przez wywołanie metody
176                 <code>strictVars(true)</code> lub przekazanie opcji
177                 <code>strictVars</code> do konstruktora.
178             </para></listitem>
179         </itemizedlist>
180     </sect2>
182     <sect2 id="zend.view.introduction.shortTags">
183         <title>Krótkie znaczniki wewnątrz skryptów widoków</title>
185         <para>
186             W naszych przykładach i dokumentacji używamy krótkich znaczników PHP:
187             <code>&lt;?</code> oraz <code>&lt;?=</code>.
188             Dodatkowo używamy <ulink
189                 url="http://us.php.net/manual/en/control-structures.alternative-syntax.php">alternatywnej
190                 składni instrukcji kontrolnych</ulink>. Te wygodne skróty,
191             których można użyć w skryptach widoków, pozwalają na zwiększenie
192             czytelności kodu
193         </para>
195         <para>
196             Jednak wielu programistów woli używać pełnych znaczników dla celów
197             poprawności czy przenośności aplikacji. Przykładowo dyrektywa
198             <code>short_open_tag</code> jest wyłączona w rekomendowanym pliku
199             konfiguracyjnym php.ini.recommended, a także jeśli używasz w
200             skryptach widoków języka XML, krótkie znaczniki mogłyby powodować
201             błędy.
202         </para>
204         <para>
205             Dodatkowo, jeśli użyjesz krótkich znaczników gdy ich obsługa jest
206             wyłączona, to mogą wystąpić błędy w skryptach widoków lub po prostu
207             kod może zostać wyświetlony użytkownikom.
208         </para>
210         <para>
211             W przypadku gdy chcesz użyć krótkich znaczników, a ich obsługa jest
212             wyłączona, masz dwa rozwiązania:
213         </para>
215         <itemizedlist>
216             <listitem>
217                 <para>
218                     Włączyć krótkie znaczniki w pliku <code>.htaccess</code>:
219                 </para>
221                 <programlisting role="apache"><![CDATA[
222 php_value "short_open_tag" "on"
224                 </programlisting>
226                 <para>
227                     To będzie możliwe tylko jeśli posiadasz uprawnienia
228                     pozwalające na tworzenie i użycie plików
229                     <code>.htaccess</code>. Ta dyrektywa może być także dodana
230                     do pliku <code>httpd.conf</code>.
231                 </para>
232             </listitem>
234             <listitem>
235                 <para>
236                     Włączyć alternatywną obsługę strumienia danych, aby w locie
237                     konwertować krótkie znaczniki na pełne:
238                 </para>
240         <programlisting role="php"><![CDATA[
241 $view->setUseStreamWrapper(true);
243                 </programlisting>
245                 <para>
246                     Rejestruje to klasę <code>Zend_View_Stream</code> jako klasę
247                     obsługującą strumień daych dla skryptów widoków i umożliwia
248                     dalsze działanie skryptów widoków, tak jakby obsługa krótkich
249                     znaczników była aktywna.
250                 </para>
251             </listitem>
252         </itemizedlist>
254         <note>
255             <title>Alternatywna obsługa strumienia danych zmniejsza wydajność</title>
257             <para>
258                 Użycie strumienia danych <emphasis>zmniejszy</emphasis> wydajność
259                 aplikacji, ale obecnie nie są dostępne testy które mogłyby pokazać
260                 jak bardzo zmniejszy. Zalecamy włączenie obsługi krótkich
261                 znaczników, konwersję skryptów widoków aby używały pełnych
262                 znaczników lub wprowadzenie dobrego buforowania części lub
263                 całości widoków.
264             </para>
265         </note>
266     </sect2>
268     <sect2 id="zend.view.introduction.accessors">
269         <title>Narzędziowe metody dostępowe</title>
271         <para>
272             W większości przypadków będziesz używał tylko metod
273             <code>assign()</code>, <code>render()</code>, lub jednej z metod
274             do ustawiania/dodawania filtrów, klas helperów oraz ścieżek
275             skryptów widoków. Jednak jeśli chcesz samodzielnie rozszerzyć klasę
276             <code>Zend_View</code>, lub potrzebujesz dostępu do jej pewnych
277             wewnętrznych funkcjonalności, to możesz użyć kilku istniejących
278             metod dostępowych:
279         </para>
281         <itemizedlist>
282             <listitem>
283                 <para>
284                     <code>getVars()</code> zwraca wszystkie przypisane zmienne.
285                 </para>
286             </listitem>
288             <listitem>
289                 <para>
290                     <code>clearVars()</code> wyczyści wszystkie przypisane
291                     zmienne; użyteczne gdy chcesz ponownie użyć obiektu widoku,
292                     ale chcesz zachować kontrolę nad tym, które zmienne mają
293                     być dostępne.
294                 </para>
295             </listitem>
297             <listitem>
298                 <para>
299                     <code>getScriptPath($script)</code> zwraca ścieżkę dla
300                     podanego skryptu widoku.
301                 </para>
302             </listitem>
304             <listitem>
305                 <para>
306                     <code>getScriptPaths()</code> zwraca wszystkie
307                     zarejestrowane ścieżki skryptów widoków.
308                 </para>
309             </listitem>
311             <listitem>
312                 <para>
313                     <code>getHelperPath($helper)</code> zwraca ścieżkę dla
314                     podanej klasy helpera.
315                 </para>
316             </listitem>
318             <listitem>
319                 <para>
320                     <code>getHelperPaths()</code> zwraca wszystkie
321                     zarejestrowane ścieżki klas helperów.
322                 </para>
323             </listitem>
325             <listitem>
326                 <para>
327                     <code>getFilterPath($filter)</code> zwraca ścieżkę dla
328                     podanej klasy filtra.
329                 </para>
330             </listitem>
332             <listitem>
333                 <para>
334                     <code>getFilterPaths()</code> zwraca wszystkie zarejestrowane
335                     ścieżki klas filtrów.
336                 </para>
337             </listitem>
338         </itemizedlist>
339     </sect2>
340 </sect1>