Alapjai a vezérlő, a végleges útmutató Yii Yii php keret

A vezérlő (kontroller) - CController egy példányát egy osztály vagy osztályok abból ered. Ez az alkalmazás hozza létre objektumot, amikor a felhasználó kéri. Indításkor, az adatkezelő végrehajtja a megfelelő lépéseket, melynek során általában meg a megfelelő modellek, és megjeleníti a szükséges ábrázolások. A legegyszerűbb esetben a keresetet - a vezérlő osztály módszer, akinek a neve kezdődik akció.

A szabályozó egy alapértelmezett műveletet hajtunk végre, ha a felhasználó nem adja meg a műveletet, amikor kéri. Alapértelmezés szerint ez az intézkedés az úgynevezett index. Ezt meg lehet változtatni érték megadásával CController :: defaultAction.

A következő kód határozza meg a helyszíni vezérlőt cselekvésekkel index (az alapértelmezett művelet) és a kapcsolattartó:

1. Útvonal ¶

Vezérlők és intézkedések alapján azonosították azonosítókat. ID a vezérlő - rekord path / to / xyz formátumban. a megfelelő fájl védett / vezérlők / útvonal / / XyzController.php vezérlő osztályban. ahol xyz ki kell cserélni a tényleges osztály nevét (például poszt között megfelel védett / vezérlők / PostController.php). ID a fellépés - egy eljárás előtagja művelet nélkül. Például, ha a vezérlő osztályban tartalmaz actionEdit módszerrel. a megfelelő műveletet ID - szerkesztés.

Megjegyzés: Alapértelmezésben útvonalak a kis- és nagybetűket. Lehetőség van megváltoztatni a tulajdonságok beállításával CUrlManager :: caseSensitive hamis az alkalmazás beállításait. A mód nem érzékenyek, győződjön meg arról, hogy a könyvtár tartalmaz vezérlő osztályban fájlok jelzett kisbetűvel, és hogy a vezérlő térkép és cselekvési térkép gombokkal kisbetűvel.

Az alkalmazás tartalmazhat modulokat. Útvonal-vezérlő művelete belsejében egy modul van beállítva moduleID / controllerID / actionID formátumban. További részletek a fejezetben leírt modulok.

2. egy példányának létrehozása a vezérlő ¶

vezérlő példány jön létre, amikor CWebApplication feldolgozza a bejövő kérést. Miután megkapta az azonosító az adatkezelő, az alkalmazás a következő szabályokat, amelyek meghatározzák a vezérlő osztály és helye:

ha az ingatlan értéke CWebApplication :: catchAllRequest. A vezérlő jön létre alapján az ingatlan, és a vezérlő, mint a felhasználó által kért, figyelmen kívül hagyja. Jellemzően arra használják, hogy az alkalmazás telepítését karbantartó módban, és megjeleníti a statikus oldal a megfelelő üzenetet,

Ha az azonosító megtalálható CWebApplication :: controllerMap. a megfelelő szabályozó konfiguráció kerül felhasználásra egy példányának létrehozásához az adatkezelő;

Ha az azonosító ebben a formában „path / to / xyz”. a vezérlő osztály nevét definiáljuk XyzController. és a megfelelő osztályba, mint védett / vezérlők / útvonal / / XyzController.php. Például, admin / felhasználói azonosítóját a vezérlő megfelel a vezérlő osztályban - UserController és a fájl védett / vezérlők / admin / UserController.php. Ha a fájl nem létezik, hogy el kell dobni CHttpException hibakóddal 404.

Ha az eljárást a fent leírt modulok egy kicsit más. Különösen, az alkalmazás ellenőrzi, hogy az azonosító megegyezik a vezérlő a modul belsejében. Ha egyezik, akkor a modul példány jön létre az első, majd a vezérlő példányt.

3. Action ¶

Mint már említettük, az intézkedés - egy eljárás, amelynek neve kezdődik akció. A fejlettebb módon -, hogy hozzon létre egy akció osztály, és kérje a vezérlő példányosíthat, amikor az szükséges. Ez a megközelítés lehetővé teszi az újrafelhasználás lépéseket.

Ahhoz, hogy hozzon létre egy osztályt akkor a következőket kell tennie:

Az adatkezelő ismeri ezt a műveletet, akkor felülírja a cselekvések () metódus a vezérlő osztályban:

A fenti, az általunk használt álnév application.controllers.post.UpdateAction útvonal jelzésére az intézkedés a class fájl védett / vezérlők / post / UpdateAction.php. Létrehozása alapján peres osztályok, akkor lehet szervezni egy alkalmazást modulárisan. Például a következő könyvtárba szerkezet használható rendezésére vezérlők kód:

Kötelező intézkedések paraméterek

Mivel verzió 1.1.4, Yii egészítette támogatás automatikus paraméter kötelező a vezérlő tevékenységének. Ez azt jelenti, megadhatja a paramétereket is, amely automatikusan megkapja a megfelelő értékeket a $ _GET.

Hogy hogyan működik mindez, tegyük fel, hogy mi kell a tevékenység megvalósításához létre PostController vezérlő. Az akció két paramétert:

A legvalószínűbb, hogy a paramétereket a $ _GET a kontroller meg kell írni a következő unalmas kód:

A paraméterek a cselekvés, akkor kap egy kellemes kód:

Mi hozzá két paraméter actionCreate módszer. A neve minden egyes pontosan meg kell egyeznie az egyik kulcsa a $ _GET. $ Nyelv paraméter alapértelmezett en. használunk, ha a kérelem nem a megfelelő opciót. Mivel a $ kategória nem alapértelmezett, ennek hiányában a megfelelő paramétert a lekérdezési automatikusan dobott kivétel CHttpException (hibakód 400).

Mivel verzió 1.1.5, Yii támogatja azt tömböket paraméterek hatását. Ezeket fel lehet használni a következők szerint:

Mi adjuk hozzá a kulcsszó tömb előtt a paraméter $ kategóriákban. Ennek eredményeképpen, ha a paraméter $ _GET [ „kategória”] egy egyszerű karakterlánc, akkor a leadott egy tömb, amely az eredeti szöveg.

Megjegyzés: Ha egy paraméter megadása nélkül deklarált tömb típus. meg kell egy skalár (azaz nem egy tömb). Ebben az esetben egy sor transzmisszió a $ _GET paraméter vezet egy HTTP kivétel.

Verziótól kezdődően 1.1.7, automatikus paraméter kötelező művek és akciók, kidolgozott formában osztályok. Ha a run () metódus a class action által leírt paraméterek, ezek a paraméterek vannak töltve a megfelelő értékei HTTP-kérés:

4. Szűrő ¶

Szűrő - egy darab kódot, amely elvégezhető előtt vagy után az intézkedés a vezérlő a konfigurációtól függően. Például a hozzáférés-vezérlési szűrő ellenőrzi, hogy a felhasználó hitelesítése előtt a kért művelet végrehajtásra kerül. Teljesítmény szűrőt lehet használni, hogy meghatározza azt az időt, hogy végre a műveletet.

A művelet több szűrőt. A szűrőket fut a sorrendben, ahogy azok megjelennek a szűrőlistába a szűrő megakadályozza a az intézkedés végrehajtását, és az alábbi szűrők számukra.

A szűrő lehet meghatározni, mint egy vezérlő osztályban módszer. A módszer neve kell kezdődnie szűrőt. Például, filterAccessControl módszer meghatározza a hozzáférési jogosultság ellenőrzése szűrőt. Keresés módszert kell kinéznie:

ahol a $ filterChain - CFilterChain például az osztály. képviseli a szűrő lista társított kért műveletet. A szűrő-kódot, akkor hívja $ filterChain-> run (), hogy folytassa a következő szűrők és intézkedéseket.

A szűrő lehet egy példány CFilter vagy származéka. Az alábbi kódot definiál egy új szűrő osztály:

Szűrőket akciók, felül kell bírálni CController :: szűrők () metódust. vissza egy tömbben szűrő konfigurációk. Például:

Ez a kód határozza meg két szűrő: postOnly és PerformanceFilter. postOnly szűrő módszerrel (amely megfelel a módszer már meghatározott CController), míg a PerformanceFilter - szűrő alapján osztályba. Felhasználónév application.filters.PerformanceFilter jelzi a szűrő osztály fájl - védett / szűrők / PerformanceFilter. A PerformanceFilter konfiguráció egy olyan tömb, amely lehetővé teszi, hogy a kezdeti értékeket a szűrő tulajdonságait. Ebben az esetben a szűrőberendezés PerformanceFilter ingatlan inicializált értéke „második”.

A szereplők „+” és „-” megadhatja, hogy mely intézkedéseket kell, és nem kell alkalmazni a szűrőt. A fenti példában postOnly kell alkalmazni, hogy az intézkedések a szerkesztését és létrehozását. és PerformanceFilter - minden eltérő tevékenységek szerkesztését és létrehozását. Ha a „+” és az üzemeltetők „-” nincs megadva, a szűrő lesz alkalmazva minden művelethez.