Hátrányok nézet a kódgyújtó, tarlyun blog

Nem titok, hogy a CodeIgniter az MVC (Model-View-Controller) fogalmát használja. Megtekintés vagy Megtekintés - felelős az adatok megjelenítéséért a felhasználónak. Az MVC koncepció fő előnye az alkalmazáskezelési logika, az adatgyűjtés és a megjelenítés szétválasztása. A CodeIgniter használatának megkezdése. elhagyod a HTML / PHP / SQL hodgepodge-t egy helyen (még mindig vannak 5000 -7000 soros fájlmodulok, melyek néhány ezer sorban pokoli funkcióval rendelkeznek). Megtekintés. nem kell közvetlenül hozzáférnie a modellekhez. Ennek az axiómának kell lennie. A Nézetben csak annyit tehet, hogy feldolgozza a bejövő adatokat a vezérlőből és használja a segítőt.

Nézzük meg a View alapvető végrehajtásának hiányosságait. Például vegyen egy darabot a dokumentációból: CodeIgniter> Felhasználói útmutató> Nézetek

A legtöbb esetben a sablont 3 részre osztjuk: az oldal függvényében változó tartalmat, mindent előtte (fejléc, fejléc, menü, sapka stb.) És mindent, ami utána (lábléc, alagsor, menü, kapcsolatok stb.).

Általában meg kell szerezned a menüt az adatbázisból. Ez körülbelül így történik:

Nem a legelegánsabb és legszebb módszer. Miért jöttünk a CodeIgniterhez. A kód megóvása és az SQL / PHP / HTML tördelése. És a végén, és visszatértek ehhez.

2. Az alapvezérlő bővítése.

Ahogy én mentem 3 évvel ezelőtt, amikor tanulmányoztam a CodeIgniter-et. A módszer lényege, hogy egy ismétlődő kódot az alapvezérlő egyik módjára mozgat, amely az oldal megjelenítéséért felelős. Minden szabályozó örökölni fogja az egyik bázist. A Megtekintés megjelenítéséhez az új _render módszert fogjuk használni.

Szétszereljük a sorrendben. Építés: végleges állami funkció _render:

végső - nem teszi lehetővé, hogy felülírja a _render módszert a MY_Controller osztály leszármazottaiban. Ez védelmet nyújt a véletlen változásokkal szemben. Ha hirtelen más alapsablonot kell létrehoznia, létrehozhat egy új módszert: _render_ajax (), _render_admin () és így tovább.

nyilvános - a módszert elérhetővé teszi az osztályon kívül.

_render - az aláhúzás a módszer neve előtt lehetővé teszi a CodeIgniter védett módszer létrehozását. amely nem hívható meg a böngészőben.

Végül tisztább kódot kaptunk a vezérlőkön, és a kimeneti sablont egy helyen végeztük. De ez egyáltalán nem ideális lehetőség, szeretnék még valamit. Nem arról szól, hogy szinte az összes CMS vagy projekt a CodeIgniter fejlesztői számára először írni / letöltő megoldásokat cserélni a normál mechanizmust a munka View.

A következő részben áttekintjük a kész megoldásokat a könnyebb és kifinomultabb nézetellenőrzés érdekében.

Nézz félre: $ this-> load-> vars ($ data);
Ennek köszönhetően a $ adatok elérhetők lesznek az összes megtekintett nézetből, anélkül, hogy megadnák a továbbítandó adatokat.
Mielőtt ezt megtenné, adjon meg $ adatokat ['content_view'] = 'some / name';
és bátran mindig ugyanazt a nézetet hívják, mondjuk fő.
belső fő írása
$ this-> load-> view ('header');
$ this-> load-> view ($ content_view) ';
$ this-> load-> view ('footer');

A második rész készen áll, amelyben áttekintésre kerülnek a sablonkönyvtárak a Code Igniter alatt

Már négy hónapja használtam a codeignitert. A fent leírt összes módszer előtt ő maga jött. Örülök, hogy ez egy általános gyakorlat. Köszönöm a cikket =)

Igen, ez a 2.1.3-as változat. A letöltött, telepített, CodeIgniter-Layout (szikrák) könyvtár, de nem értem, hogyan kell használni, és ami valójában is szükséges, nem teljesen világos. Számomra csak egy feladat van, hogy megszabaduljon az azonos típusú rekordoktól:
$ data ['pages'] = $ this-> pages_model-> get_pages ();
$ data ['pages_info'] = $ this-> pages_model-> get_pages_info ($ title);
$ data ['category'] = $ this-> pages_model-> get_category ($ title);
a vezérlő minden funkciójában. A sablonok problémája, amelyet régóta eldöntöttem, a nézetek betöltése szempontjából. Csak egy ilyen probléma van a fajjal. Ahogy ezt megértem, az egyik módozat egyik módozatának átadási tulajdonságait egy másik osztályba, mint ebben az esetben a példáján, bizonyos módon át tudod követni. De hogyan lehet ezt megvalósítani teljesen érthetetlen. És nincs idő arra, hogy néhány hónapig vagy fél évig üldögéljen néhány könyvtárt a homályos sablonok miatt, amelyek a jövőben nem hasznosak lehetnek a gyakorlatban.

Számomra csak egy feladat van, hogy megszabaduljon az azonos típusú rekordoktól

Adja meg az $ adatot a bázisvezérlőben
A vezérlő tervezőjében adja hozzá a következőket:
$ this-> data ['pages'] = $ this-> pages_model-> get_pages ();
$ this-> data ['pages_info'] = $ this-> pages_model-> get_pages_info ($ title);
$ this-> data ['category'] = $ this-> pages_model-> get_category ($ title);

A $ data $ this-> adatok helyett egy adatbázist adjon át.

Egy kicsit félreértett, készítsd el az $ adatot az alapvezérlőben. Ezt a tulajdonságot a MY_Controllerben kell elvégeznie, majd örökölnie kell más szabályzókban egy osztályt ezzel a tulajdonsággal? És hogyan készítsük el ezt a tulajdonságot? Végül is, az ingatlannak benne kell lennie valamilyen objektumhoz. És ha nem hoz létre objektumot, akkor hogyan hozzon létre egy tulajdonságot. Magyarázd el.