Tuesday, March 8, 2011

MVC Model-View-Controller avagy Modell-Nézet-Vezérlő

Model-View-Controller (MVC)

A Yii a model-view-controller (MVC / modell-nézet-kontroller/vezérlő) tervezési mintát valósítja meg, ami webprogramozás terén széleskörűen alkalmazott. Az MVC célja elválasztani az üzleti logikát a felhasználói felülettel kapcsolatos elgondolásoktól oly módon, hogy a fejlesztők minél könnyebben változtathassák meg az egyes részeket anélkül, hogy a többire hatással lennének. Az MVC mintában
a modell képviseli az információt (adatot) és az üzleti logikát; a nézet tartalmazza a felhasználói felület elemeit, úgy mint szövegek, űrlapok; a kontroller/vezérlő pedig kezeli a modell és a nézet közti párbeszédet.

Az MVC mellett a Yii a 'front-controller'-t, más néven alkalmazást, is bevezeti, ami a felhasználói kérések feldolgozásához biztosít végrehajtási környezetet. Az alkalmazás feloldja a felhasználói kérést, majd továbbítja a megfelelő kontrollernek további feldolgozásra.

A következő ábra egy Yii alkalmazás statikus felépítését mutatja:

Egy Yii alkalmazás statikus felépítése



Egy tipikus munkafolymat


A következő ábra egy tipikus munkafolyamatot mutat, aminek során a Yii alklamzás egy felhasználói kérést kezel:

Egy Yii alklamazás tipikus munkafolyamata


   1. A felhasználó kérést intéz a következő URL-lel `http://www.example.com/index.php?r=post/show&id=1` a webszerver pedig a kérést kezelendő, végrehajtja a rendszertöltő `index.php` szkriptet.

   2. A rendszertöltő szkript létrehoz egy alkalmazás példányt, és futtatja.

   3. Az alkalmazás részletes információt kap a felhasználói kérésről a `request` nevű alkalmazás komponens-től.

   4. Az alklamazás meghatározza a kért kontroller-t és tevékenységet egy `urlManager` nevű alkalmazás komponens segítségével. A jelenlegi példában ez a `post` kontrollert jelenti, ami a `PostController` osztályra hivatkozik; a tevékenység pedig `show`, aminek a tényleges jelentését a kontroller határozza meg.

   5. Az alkalmazás példányosítja a kért kontrollert, hogy a továbbiakban kezelje a felhasználói kérést. A kontroller meghatározza, hogy a `show` tevékenység a kontroller osztályának `actionShow` metódusára vonatkozik. Ezek után a tevékenységhez kapcsolódó szűrőket hoz létre (pl.: hozzáférés ellenőrzés, benchmarking). A tevékenység végrehajtódik, ha a szűrők ezt engedélyezik.

   6. A tevékenység beolvassa az adatbázisból az `1`-es ID-jű `Postmodell-t.

   7. A tevékenység lefordítja a `show` nevű nézet-et a megadott `Post` modellel.

   8. A nézet kiolvassa és megjeleníti a `Post` modell tulajdonságait.

   9. A nézet végrehajt néhány kütyü-t.

   10. A nézetfordítási eredmény beillesztésre kerül az elrendezés-be.

   11. A tevékenység befejezi a nézet fordítást és az eredményt megjeleníti a felhasználónak.

Eredeti: http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc
Fordította: Endyl

Tuesday, February 22, 2011

File feltöltés Modellen keresztül

Először vegyünk fel egy új paramétert a Modell osztályunkban, ahol a file nevét fogjuk tárolni (a modellünk lehet Form vagy Active Record osztály is). Ezek után állítsunk be egy Validálási Szabályt, hogy  biztosak lehessünk abban, hogy a felhasználó csak meghatározott kiterjesztésű file-okat tölthet fel.



Majd a Kontroller osztályunkban készítsük el azt a funkciót (action), ami a form-unk megjelenítéséért és a felhasználó által küldött adatok összegyűjtéséért lesz felelős:



Végül pedig a Nézetünkben állítsuk be a megfelelő file-feltöltő mezőt. (Megj: az enctype is fontos!)


Eredeti cikk: http://www.yiiframework.com/wiki/2/

Tuesday, February 8, 2011

Telepítés

A Yii telepítése a következő két lépésből áll:

  1. A Yii keretrendszer letöltése a http://www.yiiframework.com-ról.
  2. A letöltött fájl kicsomagolása egy webről elérhető könyvtárba.

Tipp: Nem feltétlenül szükséges a Yii-t egy webről eléhető könyvtárba telepíteni. Minden Yii alkalmazásnak van egy belépési parancsfájlja és gyakorlatilag ez az egyetlen fájl, amit elérhetővé kell tenni web felhasználók számára.

A többi PHP parancsfájl, beleértve a Yii-hez tartozókat, jobb, ha nem elérhető a webről, mivel támadás célpontjává válhatnak.

Követelmények

A Yii telepítése után célszerű megbizonyosodni arról, hogy webszerverünk teljesít minden követelményt, ami a Yii használatához szükséges. Ez könnyen megtehető a követelmény-ellenőrző parancsfájl böngészőn keresztüli futtatásával, mely a következő URL-en érhető el:

http://hostname/path/to/yii/requirements/index.php

A Yii által támasztott alapkövetelmény egy webszerver, mely rendelkezik PHP 5.1.0 (vagy későbbi) támogatással. A Yii tesztelve lett http://httpd.apache.org-rel Windows és Linux operációs rendszereken.  Minden bizonnyal más webszervereken is futtatható, feltéve, hogy rendelkezik PHP 5 támogatással.

Eredeti: http://www.yiiframework.com/doc/guide/1.1/en/quickstart.installation
Fordította: Endyl

Tuesday, January 25, 2011

Mi is a Yii?

A Yii egy nagyteljesítményű, komponens alapú PHP keretrendszer nagyszabású
webalkalmazások fejlesztéséhez. Maximális újrahasznosíthatóságot tesz lehetővé
a webprogramozás terén, és a fejlesztési folyamatot is jelentősen meggyorsítja.
A Yii név (ejtsd: angolosan `Yee` vagy fonetikusan `[ji:]`) a következő szavakból
ered: *easy (egyszerű)*, *efficient (hatékony)* és *extensible (kiterjeszthető)*.

Követelmények

Egy Yii alapú webalkalmazás futtatásához egy webszerverre van szükség, mely
rendelkezik PHP 5.1.0 (vagy későbbi) támogatással.

Azoknak a fejlesztőknek, akik Yii-vel akarnak dolgozni, az objektum-orientált
programozás (OOP) megértése meglehetősen hasznosnak bizonyul, mivel a Yii egy
tisztán OOP keretrendszer.

Mire jó a Yii?

A Yii egy általános webprogramozási keretrendszer, ami voltaképpen felhasználható
bármilyen webalkalmazás fejlesztéséhez. Mivel könnyűsúlyú (light-weighted) és
kifinomult gyorsítótárazási megoldásokat nyújt, kifejezetten alkalmas nagy forgalmú
alkalmazások, úgy mint portálok, fórumok, tartalomkezelők (CMS), e-kereskedelmi
rendszerek, stb. fejlesztésére.

A Yii összehasonlítva más keretrendszerekkel

Mint a legtöbb PHP keretrendszer, a Yii egy MVC kertrendszer.

A Yii felülmúlja a többi a keretrendszert a következőkben: hatékony, képességekben
gazdag, és világosan dokumentált. A Yii a kezdektetől fogva komoly weblakalmazások
fejlesztésére lett tervezve. Nem egy projekt mellékterméke vagy netán harmadik féltől
származó kódok összefércelt változata, hanem a szerzők webalkalmazások fejlesztésében
és vizsgálatában szerzett tekintélyes tapasztalatának eredménye és a legnépszerűbb
webprogramozási keretrendszerek és alkalmazások tükröződése.

Eredeti: http://www.yiiframework.com/doc/guide/1.0/en/quickstart.what-is-yii
Fordította: Endyl

Friday, January 21, 2011

Yii Radiio 38. adás

Halihó,

Mivel az új Yii Radiio oldalon már van automatikus fordítás (igen, magyarra is!) ezért nem fogom fordítgatni az egyes részeket, csak a Twitter-en keresztül osztom majd meg az új linket.

Monday, January 17, 2011

Itt a Yii 1.1.6-os

Végre valahára itt van az 1.1.6-os változat. Személy szerint már nagyon vártam leginkább a beépített Adatbázis Migrációk miatt. Csak nagyjából nézzük mi van az új verzióban:

Újdonság:
- Adatbázis Migrációk
- DB Query építő (erről majd később próbálok valamit összerakni)

Változott:
- A filterek használata esetén a CGridView az első oldallal tér vissza.
- A $live paraméter változtatható az $htmlOptions-on keresztül (CHtml::clientChange()).

Javítások:
- PHP hibaüzenet CJuiDatePicker::$name használatánál.
- CActiveForm felesleges focus() JavaScript kódja.


A változtatások teljes listáját itt találhatjátok: http://www.yiiframework.com/files/CHANGELOG-1.1.6.txt

Tuesday, January 11, 2011

Egy Modell Validálási Esetei

Ha valakinek van ötlete, hogy lehetne a Validation Scenarios-t szépen magyarra fordítani, ne kíméljen (talán Értékellenőrzési Forgatókönyv-nek vagy Szabályozási Szintek-nek?).

Az 1.0.2-es megjelenése óta lehetőségünk van különböző Validálási Eseteket (Validation Scenario) beállítani modelljeinkhez. Ez nagyon hasznos olyan esetekben, amikor az alkalmazásunk több pontján lehet/kell egy modellen keresztül adatot bekérni a felhasználótól.

Például egy új felhasználó regisztrálásánál valószínűleg a 'felhasználónév' az 'email cím' és a 'jelszó' mezők kötelezőek, míg az 'elfelejtett jelszó' oldalon talán csak az 'email cím'. Itt egyből látszik, hogy ha mind a három mező kötelező alap esetben, akkor az 'elfelejtett jelszó' funkció nem igazán fog működni, hiszen ha felhasználóbarátok akarunk maradni, akkor nem fogjuk bekérni sem a felhasználónevet sem pedig a jelszót (amit úgyis elfelejtett a kedves kis felhasználó ;) )

Tehát hasonló problémákra kínál tökéletes megoldást a Validálási Esetek  használata amiket nagyon egyszerűen állíthatunk be az 'on' paraméterrel a különböző modell szabályokhoz (rules). Az 'on' paraméter talán már ismerős lehet adatbevitelnél (insert) vagy frissítésnél (update) attól függően, hogy melyik mentést (save) használjuk. Elég gyakran ez a kettő nem elég sajnos, viszont ennek az új megoldásnak köszönhetően akarmennyit készíthetünk. Nézzünk is egy példát:
protected/model/User.php



Ezekkel a beállításokkal Yii már tudni fogja, hogy mikor melyik Szabály fusson le. A példa kedvéért persze betettünk egy-két extra szabályt is. Remélhetőleg a megjegyzések elolvasása után már jobban érthető, hogy mire is jó ez az egész. Az összehasonlító (compare) szabálynál látni, hogy több Szintet is meg lehet adni vesszővel elválasztva (pl: 'register,update').

Tehát ha egy modell ellenőrzését (CModel::validate()) szeretnénk elvégezni, egyszerűen adjuk át a Validálási Esetet paraméterként:



Az eredeti cikk, Jonah által: http://php-thoughts.cubedwater.com/2009/validation-scenarios/