mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-23 08:26:52 +01:00
248 lines
10 KiB
Plaintext
248 lines
10 KiB
Plaintext
Az első Yii alkalmazás létrehozása
|
|
==================================
|
|
|
|
Hogy tapasztalatot szerezzünk a Yii-vel, ebben a részben bemutatjuk, hogyan
|
|
hozhatjuk létre első Yii alkalmazásunkat. A hathatós `yiic` eszközt fogjuk
|
|
használni, ami alkalmas bizonyos kód létrehozási feladatok automatizálásara.
|
|
Kényelem szempontjából feltételezzük, hogy `YiiRoot` a könyvtár, ahova a Yii
|
|
telepítve lett, valamint `WebRoot` a webszerverünk 'document root'-ja.
|
|
|
|
Futtassuk a `yiic`-t parancssorból a következők szerint:
|
|
|
|
~~~
|
|
% YiiRoot/framework/yiic webapp WebRoot/testdrive
|
|
~~~
|
|
|
|
> Note|Figyelem: A `yiic` futtatásakor Mac OS, Linux vagy Unix rendszereken
|
|
> szükség lehet a `yiic` fájl jogosultságainak módosítására, hogy futtatható legyen.
|
|
> Alternatívaként az eszköz a következőképpen is futtatható:
|
|
>
|
|
> ~~~
|
|
> % cd WebRoot/testdrive
|
|
> % php YiiRoot/framework/yiic.php webapp WebRoot/testdrive
|
|
> ~~~
|
|
|
|
Ezáltal létrehoztunk egy Yii alkalmazás-vázat a `WebRoot/testdrive` könyvtárban.
|
|
Az alkalmazás könyvtárstruktúrája megegyezik a legtöbb Yii alkalmazás számára
|
|
szükségessel.
|
|
|
|
Egyetlen sor kód írása nélkül, már ki is próbálhatjuk első Yii alkalmazásunkat,
|
|
ha böngészőnkkel a következő URL-re navigálunk:
|
|
|
|
~~~
|
|
http://hostname/testdrive/index.php
|
|
~~~
|
|
|
|
Mint láthatjuk, az alkalmazás három lapból áll: a főoldal, egy kapcsolat lap, és
|
|
a belépési oldal. A főoldal néhány, az alkalamazással valamint a felhasználó
|
|
bejelentkezési állapotával kapcsolatos, alap információval szolgál, a kapcsolati
|
|
lapon egy űrlapot találunk, amit kitöltve a felhasználók elküdhetik
|
|
számunkra kérdéseiket/kéréseiket, a bejelentkezési lapon pedig lehetőség van
|
|
a felhasználók azonosítására, mielőtt engedélyeznénk a hozzáférést érzékeny
|
|
tartalmakhoz.
|
|
További részletekért következzék néhány képernyőkép:
|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|
|
|
A következő ábra bemutatja az alkalmazás könyvtárstruktúráját. Részletes magyarázat
|
|
a struktúra miértjéről a [Konvenciók](/doc/guide/basics.convention#directory) részben.
|
|
|
|
~~~
|
|
testdrive/
|
|
index.php a webalkalmazás belépési parancsfájlja
|
|
assets/ közzétett forrásfájlokat tartalmaz
|
|
css/ CSS fájlokat tartalmaz
|
|
images/ képfájlokat tartalmaz
|
|
themes/ alkalmazás témákat tartalmaz
|
|
protected/ az alkalamazás védett fájljait tartalmazza
|
|
yiic yiic parancssori szkript
|
|
yiic.bat yiic parancssori szkript Windows-hoz
|
|
commands/ egyéni 'yiic' parancsok tárolására
|
|
shell/ egyéni 'yiic shell' parancsok tárolására
|
|
components/ újrahasznosítható felhasználói komponensek
|
|
MainMenu.php a 'MainMenu' widget osztály
|
|
Identity.php az azonosításra használt 'Identity' osztály
|
|
views/ a widget-ek nézet fájljainak tárolására
|
|
mainMenu.php nézet fájl a 'MainMenu' widget-hez
|
|
config/ konfigurációs fájlok tárolására
|
|
console.php a parancssori alkalmazás beállításai
|
|
main.php a webalkalmazás beállításai
|
|
controllers/ kontroller osztályok tárolására
|
|
SiteController.php alapértelmezett kontroller osztály
|
|
extensions/ harmadik féltől származó kiterjesztések
|
|
messages/ lefordított üzenetek tárolására
|
|
models/ modell osztályok tárolására
|
|
LoginForm.php űrlap modell a 'login' tevékenységhez
|
|
ContactForm.php űrlap modell a 'contact' tevékenységhez
|
|
runtime/ ideiglenes fájlok tárolására
|
|
views/ kontrollerek nézet és elrendezés fájljainak tárolására
|
|
layouts/ elrendezés fájlok tárolására
|
|
main.php az alapértelmezett elrendezés a nézetekhez
|
|
site/ a 'site' kontrollerhez tartozó nézet fájlok
|
|
contact.php a 'contact' tevékenységehez tartozó nézet
|
|
index.php az 'index' tevékenységhez tartozó nézet
|
|
login.php a 'login' tevékenységhez tartozó nézet
|
|
system/ rendszerszintű nézet fájlok tárolására
|
|
~~~
|
|
|
|
Kapcsolódás adatbázishoz
|
|
------------------------
|
|
|
|
A legtöbb webalkalmazás adatbázissal támogatott. A mi próbaalkalamzásunk sem
|
|
kivétel ez alól. Egy adatbázis használatához mindenekelőtt tudatnunk kell az
|
|
alkalmazással, hogy hogyan csatlakozzon hozzá. Ezt elérhetjük az alkalmazás
|
|
beállításfájljának `WebRoot/testdrive/protected/config/main.php` módosításával,
|
|
az alábbiak szerint:
|
|
|
|
~~~
|
|
[php]
|
|
return array(
|
|
......
|
|
'components'=>array(
|
|
......
|
|
'db'=>array(
|
|
'connectionString'=>'sqlite:protected/data/source.db',
|
|
),
|
|
),
|
|
......
|
|
);
|
|
~~~
|
|
|
|
A fentiekben hozzáadunk egy `db` elemet a `components` tömbhöz, ami utasítja az
|
|
alklamazást, hogy szükség esetén csatlakozzon a `WebRoot/testdrive/protected/data/source.db`
|
|
SQLite adatbázishoz.
|
|
|
|
> Note|Figyelem: A Yii adatbázis-képessé tételéhez engedélyeznünk kell a PHP PDO
|
|
kiterjesztését, valamint a meghajtó specifikus PDO kiterjesztést. A próbaalkalmazáshoz
|
|
szükségünk van a `php_pdo` és a `php_pdo_sqlite` kiterjesztések engedélyezésére.
|
|
|
|
Végül fel kell készítenünk az SQLite adatbázisunkat, hogy a fenti beállítás
|
|
használható legyen. Egy SQLite kezelő eszköz használatával készíthetünk
|
|
egy adatbázist a következő séma alapján:
|
|
|
|
~~~
|
|
[sql]
|
|
CREATE TABLE User (
|
|
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
username VARCHAR(128) NOT NULL,
|
|
password VARCHAR(128) NOT NULL,
|
|
email VARCHAR(128) NOT NULL
|
|
);
|
|
~~~
|
|
|
|
> Note|Figyelem: Ha MySQL adatbázist használunk, a fenti SQL-ben le kell cserélnünk
|
|
> az `AUTOINCREMENT` kifejezést `AUTO_INCREMENT`-re.
|
|
|
|
Az egyszerűség kedvéért csak egy, `User` nevű táblát hozunk létre az adatbázisban.
|
|
Az SQLite adatbázis a `WebRoot/testdrive/protected/data/source.db` helyen van elmentve.
|
|
Megjegyzendő, hogy mind a fájlnak, mind pedig az azt tartalmazó könyvtárnak
|
|
írhatónak kell lennie a webszerver folyamata által az SQLite követelményei szerint.
|
|
|
|
|
|
CRUD műveletek megvalósítása
|
|
----------------------------
|
|
|
|
Térjünk a lényegre! Szeretnénk megvalósítani a CRUD (létrehozás, olvasás, frissítés
|
|
és törlés) műveleteket az éppen létrehozott `User` táblához. Ez is egy általánosan
|
|
szükséges rész a gyakorlati alkalmazásokban.
|
|
|
|
Ahelyett, hogy magunk bajlódnánk a kód megírásával, ismét a hathatós `yiic`
|
|
eszközhöz folyamodunk, hogy automatikusan létrehozza számunkra a szükséges kódot.
|
|
Ez a folymat *scaffolding*-ként (állványozás) is ismert. Indítsunk egy parancssori
|
|
ablakot és hajtsuk végre a következőkben felsorolt parancsokat:
|
|
|
|
~~~
|
|
% cd WebRoot/testdrive
|
|
% protected/yiic shell
|
|
Yii Interactive Tool v1.0
|
|
Please type 'help' for help. Type 'exit' to quit.
|
|
>> model User
|
|
generate User.php
|
|
|
|
The 'User' class has been successfully created in the following file:
|
|
D:\wwwroot\testdrive\protected\models\User.php
|
|
|
|
If you have a 'db' database connection, you can test it now with:
|
|
$model=User::model()->find();
|
|
print_r($model);
|
|
|
|
>> crud User
|
|
generate UserController.php
|
|
generate create.php
|
|
mkdir D:/wwwroot/testdrive/protected/views/user
|
|
generate update.php
|
|
generate list.php
|
|
generate show.php
|
|
|
|
Crud 'user' has been successfully created. You may access it via:
|
|
http://hostname/path/to/index.php?r=user
|
|
~~~
|
|
|
|
A fentiekben a `yiic shell` parancsot használjuk az alkalmazás vázunk módosításához.
|
|
A parancssorban két alparancsot hajtunk végre: `model User` és `crud User`.
|
|
Az előbbi létrehoz egy modell osztályt a `User` táblához, míg az utóbbi megvizsgálja
|
|
a `User` modellt és létrehozza a CRUD műveletekhez szükséges kódokat.
|
|
|
|
> Note|Figyelem: Belefuthatunk "...could not find driver"-hez hasonló hibákba,
|
|
> holott a követelmény ellnőrző szerint a PDO és a megfelelő PDO meghajtó engedélyezve
|
|
> van. Ha netán ez történne, megpróbálhatjuk a `yiic` eszköz következők szerinti
|
|
> futtatását:
|
|
>
|
|
> ~~~
|
|
> % php -c path/to/php.ini protected/yiic.php shell
|
|
> ~~~
|
|
>
|
|
> aholis a `path/to/php.ini` a valós PHP ini fájlra vonatkozik.
|
|
|
|
És most, felkeresve a következő URL-t, gyönyörködjünk az eddigi munkánkban:
|
|
|
|
~~~
|
|
http://hostname/testdrive/index.php?r=user
|
|
~~~
|
|
|
|
Ez kilistázza a felhasználó bejegyzéseket a `User` táblában. Mivel a táblánk még
|
|
nem tartalmaz rekordokat, jelenleg üres lesz a lista.
|
|
|
|
Kattintsunk a `New User` hivatkozásra a lapon. A bejelntekezési lapon találjuk
|
|
magunkat, hacsak már ezt megelőzően be nem jelentkeztünk. Bejlentkezés után
|
|
egy űrlappal találjuk szembe magunkat, aminek segítségével új felhasználót
|
|
rögzíthetünk. Töltsük ki az űrlapot és kattintsunk a `Create` gombra.
|
|
Ha hibát vétettünk az űrlap kitöltésekor, egy kis hibaüzenet lesz az eredmény,
|
|
megakadályozandó, hogy elmentsük a megadott adatokat. Sikeres mentés után a
|
|
listán megjelenik a frissen hozzáadott felhasználó.
|
|
|
|
Ismételjük meg a fenti lépéseket további felhasználók hozzáadásához. Vegyük
|
|
észre, hogy a lista automatikusan lapozhatóvá válik, ha egy lapra túl sok
|
|
felhasználó bejegyzés kerülne.
|
|
|
|
Ha adminisztrátorként lépünk be az `admin/admin` felhasználónév/jelszó párossal,
|
|
megtekinthetjük a felhasználó-kezelési lapot a következő URL-en:
|
|
|
|
~~~
|
|
http://hostname/proba/index.php?r=user/admin
|
|
~~~
|
|
|
|
Ez a felhasználó bejegyzések egy kis táblázatát mutatja. A táblázat fejléceire
|
|
kattintva az adott oszlop szerint rendezhetjük a listát. Valamint csakúgy, mint
|
|
a felhasználó lista oldal, az adminisztrációs oldal is automatikusan lapozható,
|
|
ha túl sok felhasználó jutna egy lapra.
|
|
|
|
Ez a sok remek képesség mind anélkül jött létre, hogy egy sor kódot is
|
|
írtunk volna!
|
|
|
|

|
|
|
|

|
|
|
|
|
|
|
|
<div class="revision">$Id: quickstart.first-app.txt 891 2009-03-25 15:20:56Z qiang.xue $</div> |