| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- <sect1 id="zend.controller.quickstart">
- <title>Zend_Controller gyorstalpaló</title>
- <sect2 id="zend.controller.quickstart.introduction">
- <title>Bevezetés</title>
- <para>
- A
- <code>Zend_Controller</code>
- a Zend Framework MNV rendszerének lelke. Az MNV, azaz
- <ulink url="http://hu.wikipedia.org/wiki/Modell-nézet-vezérlő">Modell-Nézet-Vezérlő</ulink>
- (Model-View-Controller, MVC), egy tervezési minta, melynek célja az alkalmazási logika elválasztása a megjelenítési logikától. A
- <code>Zend_Controller_Front</code>
- egy
- <ulink url="http://www.martinfowler.com/eaaCatalog/frontController.html">Elülső Vezérlő</ulink>
- (Front Controller) mintát valósít meg, melyben az elülső vezérlő minden kérést elfog, és a kért URL alapján kézbesít az önálló Műveletvezérlőknek (Action Controllers).
- </para>
- <para>
- A
- <code>Zend_Controller</code>
- rendszer építésekor mindvégig szem elött tartottuk a kiterjeszthetőséget, történjék az a meglévő osztályok származtatásával, olyan új osztályok írásával, melyek megvalósítják az osztályok vezérlő családjának alapját képező különféle felületeket és elvont osztályokat, vagy bővítmények, illetve művelet segédek írásával, növelendő vagy befolyásolandó a rendszer funkcionalitását.
- </para>
- </sect2>
- <sect2 id="zend.controller.quickstart.go">
- <title>Gyorstalpaló</title>
- <para>
- Ha bővebb információra van szükséged, lásd a következő fejezeteket. Ha csak gyorsan meg akarsz lenni és indulni, olvass tovább.
- </para>
- <sect3 id="zend.controller.quickstart.go.directory">
- <title>Az állományaid elrendezése</title>
- <para>
- Az első lépés, hogy elrendezd az állományaid. A jellemző elrendezés a következő:
- </para>
- <programlisting role="php">
- <![CDATA[application/
- controllers/
- IndexController.php
- models/
- views/
- scripts/
- index/
- index.phtml
- helpers/
- filters/
- html/
- .htaccess
- index.php]]>
- </programlisting>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.docroot">
- <title>A gyökérkönyvtárad beállítása</title>
- <para>
- A webkiszolgálódban állítsd a gyökérkönyvtárad a fenti elrendezés
- <code>html/</code>
- könyvtárára.
- </para>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.rewrite">
- <title>Készítsd el az átírási szabályaid</title>
- <para>
- Szerkeszd a fenti <code>html/.htaccess</code> állományt, hogy a következőképpen fessen:
- </para>
- <programlisting role="php">
- <![CDATA[RewriteEngine on
- RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php]]>
- </programlisting>
- <para>
- A fenti szabályok minden nem-erőforrás (képek, stíluslapok) kérést az elülső vezérlőhöz fog irányítani. Ha vannak más kiterjesztések, amiket el akarsz zárni az elülső vezérlőtől (PDF-ek, szöveges állományok stb.), add a kiterjesztésüket a választóhoz, vagy készítsd el a saját átírási szabályaidat.
- </para>
- <note>
- <para>
- A fenti átírási szabályok Apache-ra vonatkoznak; más webkiszolgálókra vonatkozó átírási szabályokra az
- <link linkend="zend.controller.router.introduction">útválasztó leírásában</link>
- találsz példát.
- </para>
- </note>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.bootstrap">
- <title>Készítsd el a rendszertöltő állományod</title>
- <para>
- A rendszertöltő állomány az az oldal, amin az összes kérés át van vezetve – a
- <code>html/index.php</code>,
- ebben az esetben. Nyisd meg a
- <code>html/index.php</code>
- -t az általad választott szerkesztőben, és add hozzá a következőt:
- </para>
- <programlisting role="php">
- <![CDATA[<?php
- require_once 'Zend/Controller/Front.php';
- Zend_Controller_Front::run('/eléresi/út/a/vezérlőkhöz');]]>
- </programlisting>
- <para>
- Ez példányosítani fogja az elülső vezérlőt, ami majd elirányítja a kéréseket a műveletvezérlőkhöz.
- </para>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.controller">
- <title>Készítsd el az alapértelmezett műveletvezérlőd</title>
- <para>
- Mielőtt a műveletvezérlőket tárgyalnánk, először meg kell értened, hogyan vannak a kérések irányítva a Zend Frameworkben. Alapból egy URL elérési út első része egy vezérlőre, a második pedig egy műveletre van leképezve. Például a
- <code>http://framework.zend.com/roadmap/components</code>
- URL esetén az elérési út a
- <code>/roadmap/components</code>,
- ami a
- <code>roadmap</code>
- vezérlőre és a
- <code>components</code>
- műveletre lesz leképezve. Ha nincs művelet megadva, az
- <code>index</code>
- művelet lesz feltételezve, ha nincs vezérlő megadva, akkor pedig az
- <code>index</code>
- vezérlő (követve az Apache egyezményt, ami egy
- <code>DirectoryIndexre</code>
- mutat automatikusan).
- </para>
- <para>
- Ezután a
- <code>Zend_Controller</code>
- kézbesítője veszi a vezérlő nevet és egy leképezi egy osztályra. Alapból nagykezdőbetűzi a vezérlő nevét és hozzáfűzi a
- <code>Controller</code>
- szót. Ilymódon, a fenti példánkban a
- <code>roadmap</code>
- vezérlő a
- <code>RoadmapController</code>
- osztályra lesz leképezve.
- </para>
- <para>
- Hasonlóan, a művelet név a vezérlő osztály egy tagfüggvényére lesz leképezve. Alapból a név kisbetűs, és az
- <code>Action</code>
- szó van hozzáfűzve. Tehát, a fenti példánkban a
- <code>components</code>
- műveletből
- <code>componentsAction</code>
- lesz, és végül a tagfüggvény neve
- <code>RoadmapController::componentsAction()</code>.
- </para>
- <para>
- Továbblépve tehát, csináljunk egy alapértelmezett műveletvezérlőt és művelet tagfüggvényt. Ahogy azt korábban megjegyeztük, az alapértelmezett vezérlő és művelet neve is
- <code>index</code>.
- Nyisd meg az
- <code>application/controllers/IndexController.php</code>
- állományt, és írd a következőt:
- </para>
- <programlisting role="php">
- <![CDATA[<?php
- /** Zend_Controller_Action */
- require_once 'Zend/Controller/Action.php';
- class IndexController extends Zend_Controller_Action
- {
- public function indexAction()
- {
- }
- }]]>
- </programlisting>
- <para>
- Alapból a
- <link linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>
- műveletsegéd engedélyezve van. Ez azt jelenti, hogy egyszerűen megadva egy művelet tagfüggvényt és egy vonatkozó nézet szkriptet, a tartalmad azonnal megjelenik. Alapból a
- <code>Zend_View</code>
- lesz az MNV Nézet rétegeként használva. A
- <code>ViewRenderer</code>
- varázsol kicsit, és a vezérlő (pl.
- <code>index</code>)
- és az aktuális művelet (pl.
- <code>index</code>)
- nevét használja, hogy megállípítsa melyik sablont szolgálja ki. Alapbeállítás szerint a sablonok a
- <code>.phtml</code>
- kiterjesztésre végződnek, tehát ezek szerint a fenti példában az
- <code>index/index.phtml</code>
- sablon lesz megjelenítve. Ezenfelül a
- <code>ViewRenderer</code>
- magától feltételezi, hogy a vezérlő könyvtárral egy szinten lévő
- <code>views</code>
- könyvtár lesz az alap nézet könyvtár, és hogy a nézet szkriptek a
- <code>views/scripts</code>
- alkönyvtárban helyezkednek el. Ebből következően a megjelenített sablon az
- <code>application/views/scripts/index/index.phtml</code>.
- </para>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.view">
- <title>Készítsd el a nézet szkripted</title>
- <para>
- Ahogy azt az
- <link linkend="zend.controller.quickstart.go.controller">előző részben</link>
- említettük, a nézet szkripteket az
- <code>application/views/scripts/</code>-ben
- találjuk; a nézet szkript az alapbeállítású vezérlőhöz és művelethez az
- <code>application/views/scripts/index/index.phtml</code>.
- Hozd létre ezt az állományt és írj bele némi HTML-t:
- </para>
- <programlisting role="php"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html
- lang="hu"
- xml:lang="hu"
- xmlns="http://www.w3.org/1999/xhtml"
- </html>
- <head>
- <meta
- content="text/html; charset=utf-8"
- http-equiv="Content-Type"
- />
- <title>Első Zend Framework alkalmazásom</title>
- </head>
- <body>
- <h1>Helló, világ!</h1>
- </body>
- </html>]]>
- </programlisting>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.errorhandler">
- <title>Készítsd el a hibakezelő vezérlőd</title>
- <para>
- Alapbeállítás szerint a
- <link linkend="zend.controller.plugins.standard.errorhandler">hibakezelő bővítmény</link>
- be van jegyezve. Ez az bővítmény azt várja, hogy létezik egy vezérlő, ami kezeli a hibákat. Feltételez egy
- <code>ErrorControllert</code>
- az alapértelmezett modulban, egy
- <code>errorAction()</code>
- tagfüggvénnyel:
- </para>
- <programlisting role="php">
- <![CDATA[<?php
- /** Zend_Controller_Action */
- require_once 'Zend/Controller/Action.php';
- class ErrorController extends Zend_Controller_Action
- {
- public function errorAction()
- {
- }
- }]]>
- </programlisting>
- <para>
- Feltételezve a már tárgyalt könyvtárelrendezést, ez az állomány az
- <code>application/controllers/ErrorController.php</code>
- helyre kerül. Szükséged lesz egy nézet szkriptre is az
- <code>application/views/scripts/error/error.phtml</code>-ben;
- a tartalomra egy lehetséges példa:
- </para>
- <programlisting role="php"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html
- lang="hu"
- xml:lang="hu"
- xmlns="http://www.w3.org/1999/xhtml"
- </html>
- <head>
- <meta
- content="text/html; charset=utf-8"
- http-equiv="Content-Type"
- />
- <title>Hiba</title>
- </head>
- <body>
- <h1>Hiba merült fel/h1>
- <p>Hiba merült fel; kérjük próbáld újra később.</p>
- </body>
- </html>]]>
- </programlisting>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.finish">
- <title>Nézd meg az oldalt!</title>
- <para>
- Első vezérlőddel és nézeteddel felszerelkezve most beizzíthatod a böngésződ és az oldalra navigálhatsz. Feltételezve, hogy a tartományneved
- <code>valami.hu</code>,
- a következő URL-ek bármelyike behozza a most elkészült oldalt:
- </para>
- <itemizedlist>
- <listitem><para><code>http://valami.hu/</code></para></listitem>
- <listitem><para><code>http://valami.hu/index</code></para></listitem>
- <listitem><para><code>http://valami.hu/index/index</code></para></listitem>
- </itemizedlist>
- <para>
- Mostmár nekiláthatsz új vezérlők és műveletek készítésének. Gratulálunk!
- </para>
- </sect3>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|