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>
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
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.
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.
29 <sect2 id="zend.controller.quickstart.go">
30 <title>Szybki start</title>
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.
37 <sect3 id="zend.controller.quickstart.go.directory">
38 <title>Utwórz strukturę katalogów</title>
41 Pierwszym krokiem jest utworzenie struktury katalogów. Typowa
42 struktura wygląda w taki sposób:
45 <programlisting role="php"><![CDATA[
64 <sect3 id="zend.controller.quickstart.go.docroot">
65 <title>Ustaw główną ścieżkę serwera</title>
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
74 <sect3 id="zend.controller.quickstart.go.rewrite">
75 <title>Ustaw reguły przepisania</title>
78 Zedytuj plik <code>html/.htaccess</code> aby wyglądał w taki
82 <programlisting role="php"><![CDATA[
84 RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
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.
98 Powyższe reguły przepisania przygotowane sa dla serwera
99 Apache; aby zobaczyć przykładowe reguły dla innych serwerów,
101 linkend="zend.controller.router.introduction">dokumentację
107 <sect3 id="zend.controller.quickstart.go.bootstrap">
108 <title>Utwórz plik ładujący</title>
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
117 <programlisting role="php"><![CDATA[
118 Zend_Controller_Front::run('/path/to/app/controllers');
123 Utworzy to egzemplarz kontrolera frontowego i go uruchomi,
124 co spowoduje przekazanie żądań do kontrolerów akcji.
128 <sect3 id="zend.controller.quickstart.go.controller">
129 <title>Utwórz domyślny kontroler akcji</title>
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>
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>.
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>.
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
172 <programlisting role="php"><![CDATA[
173 class IndexController extends Zend_Controller_Action
175 public function indexAction()
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>.
205 <sect3 id="zend.controller.quickstart.go.view">
206 <title>Utwórz własny skrypt widoku</title>
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:
218 <programlisting role="php"><![CDATA[
220 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
221 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
224 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
225 <title>Pierwsza aplikacja Zend Framework</title>
235 <sect3 id="zend.controller.quickstart.go.errorhandler">
236 <title>Utwórz kontroler błędu</title>
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:
247 <programlisting role="php"><![CDATA[
248 class ErrorController extends Zend_Controller_Action
250 public function errorAction()
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:
265 <programlisting role="php"><![CDATA[
267 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
268 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
271 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
275 <h1>Wystąpił błąd</h1>
276 <p>Wystąpił błąd; spróbuj ponownie później.</p>
283 <sect3 id="zend.controller.quickstart.go.finish">
284 <title>Zobacz stronę!</title>
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:
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>
300 Teraz jesteś gotowy do tworzenia kolejnych kontrolerów i metod