O Introducere în Vizualizări și Templierea în CodeIgniter

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 Market

Ce este o vedere?

Vizualiză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.


Cum se încarcă o vizualizare

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.


Crearea și afișarea unei vizualizări

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!

Se încarcă mai multe vizionări

Î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!


Utilizarea datelor din controler în Vizualizare

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.

Cum se utilizează variabilele în vizualizări

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:

  • Afișați valoarea unei variabile
  • Bucle prin rețele sau proprietăți obiect
  • Utilizați instrucțiuni condiționale pentru a afișa sau a ascunde marcajul

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).


Templificarea în CodeIgniter

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:

  • Implementarea unei structuri de director previzibile și sustenabile pentru vizualizările dvs.
  • Permiterea utilizării mai multor șabloane distincte
  • Reducerea încărcării unei vizualizări a paginii la o singură linie de cod

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.


Pasul 1: Configurarea directorului

Vrem să impunem un sistem director inteligibil și previzibil pentru fișierele noastre de vizualizare, astfel încât opiniile noastre să fie:

  • Ușor de localizat
  • Ușor de determinat care zonă a aplicației aparțin
  • Ușor de întreținut

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.


Pasul 2: Crearea Bibliotecii

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.

Scrierea metodei de încărcare

Acum vom scrie metoda pentru a încărca o vizualizare de șablon. Vrem să trecem până la trei parametri pentru această funcție:

  • Numele șablonului
  • Numele de vizualizare a caroseriei (opțional)
  • Datele care trebuie transmise către vizualizări (opțional)

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ță.


Utilizarea Bibliotecii

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:

   <?php echo $title; ?>   

Ș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);

Sfat rapid

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');

Concluzie

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ă.

Cod