Viziunile sunt un ingredient cheie în orice aplicație MVC, iar aplicațiile CodeIgniter nu sunt diferite. Astăzi, vom învăța ceea ce este o viziune și vom descoperi cum pot fi folosite pentru a crea o soluție de template pentru proiectele CodeIgniter.
Prima parte a acestui tutorial va educa începătorii complet la CodeIgniter cu privire la ceea ce este o vedere și cum să le folosească într-o aplicație tipică. A doua jumătate va discuta motivațiile pentru găsirea unei soluții templante și va ghida cititorul prin pașii necesari pentru a crea o bibliotecă templificatoare simplă și eficientă.
Dacă doriți să faceți mai mult cu CodeIgniter, verificați gama de pluginuri CodeIgniter și scripturi de cod de pe Envato Market.
Pluginurile CodeIgniter și scripturile de cod de pe Envato MarketVizualizările sunt fișiere speciale folosite în CodeIgniter pentru a stoca marcajul afișat de aplicație, format în mod obișnuit din HTML și simple etichete PHP.
"O vizualizare este pur și simplu o pagină web sau un fragment de pagină, cum ar fi un antet, subsol, bara laterală etc. De fapt, vizualizările pot fi încorporate în mod flexibil în alte vizualizări (în alte vizualizări etc.), dacă aveți nevoie de aceasta tip de ierarhie. "
Viziunile sunt încărcate din cadrul metodelor controlerului, conținutul din interiorul vizualizării afișat ulterior în browser.
Pentru a încărca (și a afișa) o vizualizare în CodeIgniter, folosim biblioteca construită în Loader.
$ this-> load-> view ('hello_world', $ date, true / false);
Această singură linie de cod îi va spune CodeIgniterului să caute hello_world.php
în aplicație / vizualizări
și afișați conținutul fișierului în browser.
Notă că CodeIgniter vă permite să excludeți sufixul .php, salvând câteva apăsări de taste atunci când tastați numele de fișier al vizualizării pe care doriți să-l încărcați.
Al doilea parametru, $ date
, este facultativ și ia o matrice sau un obiect asociativ. Această matrice / obiect este utilizat pentru a transmite date către fișierul de vizualizare, astfel încât acesta să poată fi utilizat sau referit în vizualizare.
Finala facultativ parametrul determină dacă conținutul vizualizării este afișat în fereastra browserului sau returnat ca un șir. Acest parametru este implicit false, afișând conținutul în browser. Vom vedea mai târziu în tutorial cum poate fi folosit acest parametru atunci când creați o soluție de template.
Pentru a configura prima vedere, creați un nou fișier numit hello_world.php
în aplicație / vizualizări
și scrieți următorul cod HTML simplu:
Salut Lume! Salut Lume!
Acum, pentru a afișa această vizualizare în browser, trebuie să fie încărcată în cadrul unei metode Controller, utilizând metoda menționată mai sus.
Deci, să creăm un nou dosar de controler numit hello_world.php
în aplicatii / controllere
și plasați următorul cod în. Din acest controler, vom încărca vizualizarea nou creată.
a sarcinii> vizualizare ( 'hello_world');
Arătând browserul dvs. la http://your-ci-install.com/index.php/
va duce acum la HTML în cerere / vizualizari / hello_world.php
fiind afișate în browser. Ați încărcat cu succes o vizualizare!
Împărțirea unei vizualizări în mai multe fișiere face ca site-ul dvs. să fie mai ușor de întreținut și să reducă hota probabilă a codului duplicat.
Afișarea unei singure vizualizări este bine și bună, însă este posibil să doriți să împărțiți ieșirea în mai multe fișiere distincte, cum ar fi antetul, conținutul și subsolul vizualizari.
Încărcarea mai multor vederi este realizată prin simpla apelare a funcției $ This-> a sarcinii> vizualizare ()
de mai multe ori. CodeIgniter concatenă conținutul vizualizărilor împreună înainte de a fi afișat în browser.
Creați un fișier nou numit header.php
în aplicație / vizualizări
și tăiați și lipiți primele linii din originalul nostru hello_world.php
fișier în.
Salut Lume!
În mod similar, creați un alt fișier numit footer.php
în aplicație / vizualizări
și mutați ultimele două linii hello_world.php
în.
Acest lucru lasă hello_world.php
vizualizați fișierul care conține doar conținutul paginii noastre.
Salut Lume!
Acum, pentru a afișa pagina din nou, trebuie să încărcăm toate cele trei vizualizări (header.php, hello_world.php, footer.php), în ordine, în cadrul controlorului nostru.
Redeschide application / controllere / hello_world.php
și adăugați noul $ This-> a sarcinii> vizualizare ()
apelurile deasupra și sub cea existentă.
a sarcinii> vizualizare ( 'header'); $ This-> a sarcinii> vedere ( 'hello_world'); $ This-> a sarcinii> vizualizare ( 'subsol');
Deoarece vederile antetului și subsolului sunt acum separate de Salut Lume
vizualizare, înseamnă că acestea pot fi utilizate împreună cu orice alte vizualizări de pe site. Aceasta înseamnă că codul din fișierele antetului și subsolului nu trebuie să fie copiat în alte vizualizări din proiect care necesită acest cod.
Evident, acest lucru este un beneficiu uriaș deoarece orice modificare a codului HTML sau a conținutului din vizualizări, de exemplu adăugarea unei foi de stil noi în antet, poate fi făcută numai unui singur fișier și nu fiecărui fișier!
Acum, vom examina datele trecute de la controale, astfel încât acestea să poată fi utilizate sau afișate în interiorul vizualizării.
Pentru a realiza acest lucru, vom trece o matrice asociativă, $ date
ca al doilea parametru în $ This-> a sarcinii> vizualizare ()
apel.
valorile din această matrice vor fi accesibile în cadrul vizualizării încărcate ca variabile, numite de respectivele lor chei.
$ data = array ('title' => 'Hello World!', 'content' => 'Acesta este conținutul', 'posts' => array ('Post 1', 'Post 2', 'Post 3') ); $ this-> load-> view ('hello_world', $ date);
Codul de mai sus va da variabila titlu $ valoarea "Hello World!" în interiorul Salut Lume
vedere.
După ce am trecut datele noastre în fișierele de vizualizare, variabilele pot fi utilizate în mod obișnuit.
În mod obișnuit, fișierul de vizualizare va utiliza datele transferate la:
Voi trece prin exemple rapide de a face fiecare.
Pentru a afișa conținutul unei variabile, utilizați instrucțiunea ecou simplă și familiară:
Împoțirea printr-o matrice sau un obiect este o sarcină obișnuită în fișierele de vizualizare și poate fi realizată cu o buclă de foreach:
Simplul declarații condiționale pot fi utilizate în fișierele de vizualizare pentru a modifica ușor ieșirea, în funcție de datele transmise.
În general, doriți să păstrați la minimum utilizarea declarațiilor condiționate în vizualizări, deoarece utilizarea excesivă poate duce la fișiere de vizualizare complicate, care conțin "logica de afaceri". Împărțirea vizualizării în diferite fișiere și decizia care va fi afișată în controler este mult mai preferabilă.
Va rugam sa va logati
Exemplul de mai sus va afișa fie un mesaj "Bun venit", fie o solicitare de conectare a utilizatorului, în funcție de valoarea lui $ logged_in
(adevarat fals).
Am văzut cum împărțirea vizualizărilor în fișiere separate, mai mici, poate ajuta la organizarea și reducerea numărului de fișiere din proiectele CodeIgniter, dar acum trebuie să efectuați mai multe solicitări de afișare a încărcărilor în fiecare instanță în care este afișată o pagină.
Să presupunem că aveți vederi separate în antet și în subsol, care sunt folosite pentru a forma un șablon. Fiecare instanță din proiectul în care doriți să încărcați și să afișați o pagină utilizând acest șablon, trebuie să fie solicitate trei încărcări de vizualizare. Nu numai că acest dezordine controlează controlorii dvs., dar rezultă o mulțime de cod repetate - exact ceea ce am vrut să ne scăpăm de împărțirea fișierelor.
Dacă doriți acum să adăugați un marcaj suplimentar la acest șablon acum, de exemplu, un meniu lateral al barei. Ar putea merge în vederile antetului, dar este mai potrivit să fie în propria sa vedere separată. Adăugarea acestei noi vizualizări la șablonul existent înseamnă că treci prin fiecare instanță a încărcărilor de vizualizare și adăugând altul..
Avem nevoie de o modalitate de a putea încorpora fișierele de vizualizare care afișează conținutul paginii individuale, în interiorul unui șablon, fără a repeta codul, și care permite modificarea șablonului cu ușurință și eficient.
Următorii pași vă vor ghida prin crearea unei librării simple CodeIgniter care să satisfacă aceste nevoi, precum și:
Odată ce biblioteca este scrisă și în centura noastră de instrumente CodeIgniter, vom putea afișa o pagină șablonată astfel:
$ this-> template-> load ('template_name', 'body_view');
Mult mai dragut!
Soluția noastră de template va folosi fișiere de vizualizare care conțin marcajul complet al unui șablon, cu un substituent pentru alt fișier de vizualizare (cu conținutul paginii) care va fi încorporat în.
Placeholderul va fi de fapt o variabilă numită $ corp
. Când se încarcă o vizualizare șablonată cu biblioteca noastră, conținutul fișierului de vizualizare corporală adecvat va fi atribuit acestui lucru $ corp
, încorporarea vederii în cadrul șablonului.
Vrem să impunem un sistem director inteligibil și previzibil pentru fișierele noastre de vizualizare, astfel încât opiniile noastre să fie:
Sistemul nostru de directoare va permite bibliotecii să determine în mod inteligent unde să caute fișiere de vizualizare, reducând cantitatea de cod necesară pentru a încărca o vizualizare șablonată.
Creați un dosar nou în interiorul aplicație / vizualizări
și denumiți-o template-uri
. Acest dosar va păstra diferitele vizionări ale șabloanelor.
Bibliotecile din CodeIgniter sunt doar clase PHP și sunt încărcate în controlori la fel ca vizualizările.
$ This-> a sarcinii> bibliotecă ( 'class_name');
Bibliotecile personalizate pe care le folosiți în proiectele CodeIgniter sunt stocate în aplicații / biblioteci
pliant. Pentru a începe să scrieți biblioteca templating, creați un nou fișier în acest dosar numit Template.php
, și plasați următorul cod în:
ci = & get_instance ();
Codul de mai sus definește o nouă clasă sau o bibliotecă numită Format si __construi()
metoda în cadrul.
Această metodă atribuie obiectul SuperCodeIgniter la $ CI
de clasă, permițând utilizarea tuturor resurselor CodeIgniter prin înlocuire $ this
cu $ This-> CI
în apelurile metodice obișnuite.
Când biblioteca este încărcată în cadrul CodeIgniter, __construi()
metoda se numește automat.
Acum vom scrie metoda pentru a încărca o vizualizare de șablon. Vrem să trecem până la trei parametri pentru această funcție:
Rezultatul acestei metode fiind numit, va fi afișarea șablonului afișată în browser, cu vizualizarea corpului încorporată în interior, dacă este furnizată.
Dedesubt __construi()
, plasați următorul cod:
funcția de încărcare ($ tpl_view, $ body_view = null, $ data = null) if (! is_null ($ body_view)) if (file_exists (APPPATH.views /'.$ tpl_view. $ body_view_path = $ tpl_view. '/'. $ body_view; altfel dacă (file_exists (APPPATH.'views /'.$ tpl_view. / '. $ body_view.'. php ')) $ body_view_path = $ tpl_view. /'. $ body_view. '. php'; altfel dacă (file_exists (APPPATH.views /'.$ body_view)) $ body_view_path = $ body_view; altfel dacă (file_exists (APPPATH.'views /'.$ body_view. '. php')) $ body_view_path = $ body_view. '. php'; altceva show_error ('Nu se poate încărca fișierul solicitat:'. $ tpl_name '/'. $ view_name. '. php'); $ body = $ this-> ci-> încărcare-> vizualizare ($ body_view_path, $ data, TRUE); dacă (is_null ($ data)) $ data = array ('body' => $ corp); altfel dacă (is_array ($ data)) $ data ['body'] = $ body; altfel dacă (is_object ($ data)) $ data-> body = $ body; $ this-> ci-> load-> view ('templates /'.$ tpl_view, $ data);
Codul de mai sus începe prin a verifica dacă $ body_view
parametru a fost furnizat metodei. Această variabilă va menține numele vizualizării pentru a fi utilizată ca organism în vizualizarea șablonului.
dacă (! is_null ($ body_view))
Dacă parametrul este furnizat, se efectuează o serie de verificări file_exists pentru a încerca să găsiți fișierul de vizualizare în sistemul nostru de directoare.
dacă file_există (APPPATH.views /'.$ tpl_view. / '. $ body_view)) $ body_view_path = $ tpl_view.' / '. $ body_view; altfel dacă (file_exists (APPPATH.'views /'.$ tpl_view. / '. $ body_view.'. php ')) $ body_view_path = $ tpl_view. /'. $ body_view. '. php';
În primul rând, codul încearcă să găsească fișierul de vizualizare din interiorul unui dosar cu același nume ca șablonul în aplicație / vizualizări
pliant.
Acest lucru este util dacă secțiunile din proiectul dvs. sunt drastic diferite de celelalte și folosiți șabloane diferite. În aceste condiții, este logic să grupați aceste fișiere de vizualizare împreună.
De exemplu, o mulțime de site-uri web afișează un șablon diferit pentru secțiuni distincte, cum ar fi blogurile. În sistemul nostru, fișierele de vizualizare a blogului pot fi plasate în interiorul cerere / vizualizari / blog
folder, separându-le de vederile principale ale site-ului.
Dacă fișierul de vizualizare nu poate fi localizat în acest folder, .php
este atașat la sfârșitul fișierului, iar verificarea se face din nou. Aceasta este pur și simplu așa .php
poate fi exclusă ca nativul $ This-> a sarcinii> vizualizare ()
apel.
Dacă fișierul nu mai poate fi localizat, se fac verificări suplimentare pentru locația acestuia.
altfel dacă (file_exists (APPPATH.views /'.$ body_view)) $ body_view_path = $ body_view; altfel dacă (file_exists (APPPATH.'views /'.$ body_view. '. php')) $ body_view_path = $ body_view. '. php'; altceva show_error ('Nu se poate încărca fișierul solicitat:'. $ tpl_name '/'. $ view_name. '. php');
De această dată, codul verifică dacă fișierul de vizualizare este situat în interiorul aplicație / vizualizări
și, din nou, dacă nu poate fi găsit, se anexează .php
și verifică încă o dată.
Dacă fișierul se află într-unul din aceste locuri, calea este alocată $ body_view_path
, altfel un mesaj de eroare este aruncat folosind show_error ()
funcția construită în CodeIgniter, iar scriptul este terminat.
Dacă fișierul de vizualizare a corpului a fost localizat cu succes, conținutul este atribuit $ corp
variabil.
$ body = $ this-> ci-> încărcare-> vizualizare ($ body_view_path, $ data, TRUE);
Noi trecem $ date
(nul, dacă nu este furnizat) la apelul de încărcare vizuală și setați al treilea parametru la Adevărat pentru a returna ieșirea vederii ca șir.
Acum adăugăm acest lucru $ corp
variabilă la lista de date din $ date
astfel încât să poată fi încorporat în vizualizarea șablonului atunci când este încărcat.
dacă (is_null ($ data)) $ data = array ('body' => $ corp); altfel dacă (is_array ($ data)) $ data ['body'] = $ body; altfel dacă (is_object ($ data)) $ data-> body = $ body;
Dacă $ date
nu a fost furnizat sarcină()
apel, $ date
este atribuită unei matrice care conține $ corp
sub cheie corp. Dacă parametrul a fost furnizat, $ corp
este adăugată la listă fie prin atribuirea acesteia unei chei de matrice, fie a unei proprietăți obiect, ambele denumite și ele corp.
$ corp
variabila poate fi acum utilizată în fișierele de vizualizare a șabloanelor ca a placeholder pentru vizualizările încorporate.
Ultima linie a metodei noastre încarcă fișierul de vizualizare a șablonului din aplicație / vizualizări / șabloane
folder, și trece $ date
variabilă în al doilea parametru.
$ this-> ci-> load-> view ('templates /'.$ tpl_name, $ date);
Si asta e! Biblioteca poate fi acum pusă în folosință.
Pentru a începe să folosim biblioteca noastră, să creăm o vizualizare de șablon numită default.php
în aplicație / vizualizări / șabloane
, și plasați următoarele HTML / PHP în interiorul:
Șablonul implicit
În acest șablon, menționăm două variabile, titlu $
și $ corp
.
Amintiți-vă că în fișierele noastre șablon, $ corp
servește ca un substituent pentru o vizualizare încorporată.
Acum vom face o altă viziune care să fie încorporată în acest șablon. Creați un fișier nou numit content.php
în application / opinii /
și plasați acest interior HTML simplu:
Salut Lume!
Acum suntem gata să încărcăm vizualizarea paginii șablonată din interiorul unui controler.
În cadrul oricărei metode de controler, plasați următorul cod pentru a afișa conţinut
vizualiza, în cadrul Mod implicit
șablon.
$ data = array ('title' => 'Titlul merge aici',); $ This-> a sarcinii> bibliotecă ( 'template'); $ this-> template-> load ("implicit", "conținut", $ date);
Notă: biblioteca trebuie încărcată înainte de a putea apela sarcină
metodă. Pentru a vă salva încărcarea bibliotecii de fiecare dată când trebuie să fie afișată o vizualizare de șablon,
autoload clasa prin adăugarea acesteia la gama de biblioteci din application / config / autoload.php
.
Dacă în locul unui fișier de vizualizare doriți să fie încorporat un șir în șablon, pur și simplu asociați șirul $ date
folosind cheia corp
, și treci nul
ca al doilea parametru în apelul de încărcare.
$ data = array ('title' => 'Titlul merge aici', 'body' => 'Șirul care urmează să fie încorporat aici!'); $ this-> template-> load ("implicit", null, $ data);
Am descoperit că gruparea vizualizării fișierelor în dosare de către controlor și chiar metoda de care aparțin într-adevăr ajută la păstrarea opiniilor mele organizate și ușor de localizat.
Organizarea vizualizărilor dvs. în acest mod are ca rezultat structura directoarelor care urmăresc îndeaproape schema de adrese URL controler / metodă
.
De exemplu, spuneți că proiectul dvs. are un controler numit Membrii
, conținând metoda listă
.
O locație adecvată pentru listă
fișierul de vizualizare ar fi în aplicatii / opinii / membri
, sau cerere / opinii / membri / lista
, dacă această metodă încarcă mai multe vizualizări.
Această vizualizare ar putea fi încorporată într-un șablon folosind biblioteca noastră cu următorul cod:
$ this-> template-> load ('template_name', 'members / list');
Soluția templantă discutată în acest tutorial este doar una din multitudinea de modalități diferite de a realiza templarea în CodeIgniter.
Ar trebui să știi, acum, care sunt opiniile și cum să le folosiți în mod eficient și eficient în proiectele CodeIgniter.
Soluția templantă discutată în acest tutorial este doar una din multitudinea de modalități diferite de a realiza template-uri în CodeIgniter. Există o serie de abordări diferite și vă încurajez pe cititor să cercetați celelalte metode și să determinați ce se potrivește cel mai bine proiectelor dvs..
Dacă aveți orice comentarii sau întrebări despre tutorial sau despre orice informații despre diferite soluții de template-uri, vă rugăm să lăsați un comentariu de mai jos! Vă mulțumim pentru lectură.