[MANUAL] English:
[zend.git] / documentation / manual / pl / module_specs / Zend_Controller-QuickStart.xml
blobc3d3a9222601a4186b8c1835500e76bb8cf81b65
1 <sect1 id="zend.controller.quickstart">
2     <title>Szybki start z klasą Zend_Controller</title>
4     <sect2 id="zend.controller.quickstart.introduction">
5         <title>Wprowadzenie</title>
6         <para>
7             Klasa <code>Zend_Controller</code> jest sercem systemu MVC
8             biblioteki Zend Framework. MVC oznacza <ulink
9                 url="http://pl.wikipedia.org/wiki/Model-widok-kontroler">Model-Widok-Kontroler</ulink>
10             i jest wzorcem projektowym mającym na celu oddzielenie logiki
11             aplikacji od logiki wyświetlania. Klasa
12             <code>Zend_Controller_Front</code> implementuje wzorzec projektowy
13             <ulink
14                 url="http://www.martinfowler.com/eaaCatalog/frontController.html">kontrolera
15                 frontowego</ulink>. Wszystkie żądania są przechwytywane
16             przez kontroler frontowy i na podstawie adresu URL uruchamiany
17             jest odpowiedni kontroler akcji.
18         </para>
19         <para>
20             The <code>Zend_Controller</code> system was built with extensibility
21             in mind, either by subclassing the existing classes, writing new
22             classes that implement the various interfaces and abstract classes
23             that form the foundation of the controller family of classes, or
24             writing plugins or action helpers to augment or manipulate the
25             functionality of the system.
26         </para>
27     </sect2>
29     <sect2 id="zend.controller.quickstart.go">
30         <title>Szybki start</title>
32         <para>
33             If you need more in-depth information, see the following sections.
34             If you just want to get up and running quickly, read on.
35         </para>
37         <sect3 id="zend.controller.quickstart.go.directory">
38             <title>Utwórz strukturę katalogów</title>
40             <para>
41                 Pierwszym krokiem jest utworzenie struktury katalogów. Typowa
42                 struktura wygląda w taki sposób:
43             </para>
45             <programlisting role="php"><![CDATA[
46 application/
47     controllers/
48         IndexController.php
49     models/
50     views/
51         scripts/
52             index/
53                 index.phtml
54         helpers/
55         filters/
56 html/
57     .htaccess
58     index.php
59 ]]>
60             </programlisting>
62         </sect3>
64         <sect3 id="zend.controller.quickstart.go.docroot">
65             <title>Ustaw główną ścieżkę serwera</title>
67             <para>
68                 W swoim serwerze www, ustaw główną ścieżkę serwera na katalog
69                 <code>html</code> znajdujący się w powyższej przykładowej
70                 strukturze katalogów.
71             </para>
72         </sect3>
74         <sect3 id="zend.controller.quickstart.go.rewrite">
75             <title>Ustaw reguły przepisania</title>
77             <para>
78                 Zedytuj plik <code>html/.htaccess</code> aby wyglądał w taki
79                 sposób:
80             </para>
82             <programlisting role="php"><![CDATA[
83 RewriteEngine on
84 RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
85 ]]>
86             </programlisting>
88             <para>
89                 The above rules will route any non-resource (images,
90                 stylesheets) requests to the front controller. If there are
91                 other extensions you wish to exclude from the front controller
92                 (PDFs, text files, etc), add their extensions to the switch, or
93                 create your own rewrite rules.
94             </para>
96             <note>
97                 <para>
98                     Powyższe reguły przepisania przygotowane sa dla serwera
99                     Apache; aby zobaczyć przykładowe reguły dla innych serwerów,
100                     zobacz <link
101                       linkend="zend.controller.router.introduction">dokumentację
102                     routera</link>.
103                 </para>
104             </note>
105         </sect3>
107         <sect3 id="zend.controller.quickstart.go.bootstrap">
108             <title>Utwórz plik ładujący</title>
110             <para>
111                 Plik ładujący jest miejscem, przez którze przechodzą wszystkie
112                 żądania -- w tym przypadku jest to -- <code>html/index.php</code>.
113                 Otwórz plik <code>html/index.php</code> w dowolnym edytorze i
114                 dodaj poniższy kod:
115             </para>
117             <programlisting role="php"><![CDATA[
118 Zend_Controller_Front::run('/path/to/app/controllers');
120             </programlisting>
122             <para>
123                 Utworzy to egzemplarz kontrolera frontowego i go uruchomi,
124                 co spowoduje przekazanie żądań do kontrolerów akcji.
125             </para>
126         </sect3>
128         <sect3 id="zend.controller.quickstart.go.controller">
129             <title>Utwórz domyślny kontroler akcji</title>
131             <para>
132                 Before discussing action controllers, you should first
133                 understand how requests are routed in Zend Framework. By
134                 default, the first segment of a URL path maps to a controller,
135                 and the second to an action. For example, given the URL
136                 <code>http://framework.zend.com/roadmap/components</code>, the
137                 path is <code>/roadmap/components</code>, which will map to the
138                 controller <code>roadmap</code> and the action
139                 <code>components</code>. If no action is provided, the action
140                 <code>index</code> is assumed, and if no controller is provided,
141                 the controller <code>index</code> is assumed (following the
142                 Apache convention that maps a <code>DirectoryIndex</code>
143                 automatically).
144             </para>
146             <para>
147                 <code>Zend_Controller</code>'s dispatcher then takes the
148                 controller value and maps it to a class. By default, it
149                 Title-cases the controller name and appends the word
150                 <code>Controller</code>. Thus, in our example above, the
151                 controller <code>roadmap</code> is mapped to the class
152                 <code>RoadmapController</code>.
153             </para>
155             <para>
156                 Similarly, the action value is mapped to a method of the
157                 controller class. By default, the value is lower-cased, and the
158                 word <code>Action</code> is appended. Thus, in our example
159                 above, the action <code>components</code> becomes
160                 <code>componentsAction</code>, and the final method called is
161                 <code>RoadmapController::componentsAction()</code>.
162             </para>
164             <para>
165                 Idąc dalej, utwórzmy teraz domyślny kontroler akcji i metodę
166                 akcji. Jak wspomniano wcześniej, domyślna nazwa kontrolera oraz
167                 akcji to <code>index</code>. Otwórz w edytorze plik
168                 <code>application/controllers/IndexController.php</code>, i
169                 dodaj poniższy kod:
170             </para>
172             <programlisting role="php"><![CDATA[
173 class IndexController extends Zend_Controller_Action
175     public function indexAction()
176     {
177     }
180             </programlisting>
182             <para>
183                 By default, the <link
184                     linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>
185                 action helper is enabled. What this means is that by simply
186                 defining an action method and a corresponding view script, you
187                 will immediately get content rendered.  By default,
188                 <code>Zend_View</code> is used as the View layer in the MVC. The
189                 <code>ViewRenderer</code> does some magic, and uses the
190                 controller name (e.g., <code>index</code>) and the current
191                 action name (e.g., <code>index</code>) to determine what
192                 template to pull. By default, templates end in the
193                 <code>.phtml</code> extension, so this means that, in the above
194                 example, the template <code>index/index.phtml</code> will be
195                 rendered. Additionally, the <code>ViewRenderer</code>
196                 automatically assumes that the directory <code>views</code> at
197                 the same level as the controller directory will be the base view
198                 directory, and that the actual view scripts will be in the
199                 <code>views/scripts/</code> subdirectory. Thus, the template
200                 rendered will be found in
201                 <code>application/views/scripts/index/index.phtml</code>.
202             </para>
203         </sect3>
205         <sect3 id="zend.controller.quickstart.go.view">
206             <title>Utwórz własny skrypt widoku</title>
208             <para>
209                 As mentioned <link
210                     linkend="zend.controller.quickstart.go.controller">in the
211                     previous section</link>, view scripts are found in
212                 <code>application/views/scripts/</code>; the view script for the
213                 default controller and action is in
214                 <code>application/views/scripts/index/index.phtml</code>. Create
215                 this file, and type in some HTML:
216             </para>
218             <programlisting role="php"><![CDATA[
219 <!DOCTYPE html
220 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
221 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
222 <html>
223 <head>
224   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
225   <title>Pierwsza aplikacja Zend Framework</title>
226 </head>
227 <body>
228     <h1>Witaj!</h1>
229 </body>
230 </html>
232             </programlisting>
233         </sect3>
235         <sect3 id="zend.controller.quickstart.go.errorhandler">
236             <title>Utwórz kontroler błędu</title>
238             <para>
239                 Domyślnie, <link
240                     linkend="zend.controller.plugins.standard.errorhandler">wtyczka
241                 obsługi błędów</link> jest zarejestrowana. Ta wtyczka
242                 expects that a controller exists to handle errors.
243                 By default, it assumes an <code>ErrorController</code> in the
244                 default module with an <code>errorAction</code> method:
245             </para>
247             <programlisting role="php"><![CDATA[
248 class ErrorController extends Zend_Controller_Action
250     public function errorAction()
251     {
252     }
255             </programlisting>
257             <para>
258                 Assuming the already discussed directory layout, this file will
259                 go in <code>application/controllers/ErrorController.php</code>.
260                 You will also need to create a view script in
261                 <code>application/views/scripts/error/error.phtml</code>; sample
262                 content might look like:
263             </para>
265             <programlisting role="php"><![CDATA[
266 <!DOCTYPE html
267 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
268 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
269 <html>
270 <head>
271   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
272   <title>Błąd</title>
273 </head>
274 <body>
275     <h1>Wystąpił błąd</h1>
276     <p>Wystąpił błąd; spróbuj ponownie później.</p>
277 </body>
278 </html>
280             </programlisting>
281         </sect3>
283         <sect3 id="zend.controller.quickstart.go.finish">
284             <title>Zobacz stronę!</title>
286             <para>
287                 With your first controller and view under your belt, you can now
288                 fire up your browser and browse to the site. Assuming
289                 <code>example.com</code> is your domain, any of the following
290                 URLs will get to the page we've just created:
291             </para>
293             <itemizedlist>
294                 <listitem><para><code>http://example.com/</code></para></listitem>
295                 <listitem><para><code>http://example.com/index</code></para></listitem>
296                 <listitem><para><code>http://example.com/index/index</code></para></listitem>
297             </itemizedlist>
299             <para>
300                 Teraz jesteś gotowy do tworzenia kolejnych kontrolerów i metod
301                 akcji. Gratulacje!
302             </para>
303         </sect3>
304     </sect2>
305 </sect1>