În posturile anterioare, am dezvoltat structura minimă a cadrului. În acest articol, vom pune un pic de luciu - vom adăuga o temă simplă cu bootstrap, un meniu și vom examina mai atent lucrul motorului șablon și al routerului (ruterul site-ului).
În ultimul articol am creat un router. care utilizează logica expresiilor regulate pentru a recunoaște legătura sef de intrare și o trimite la controlerul dorit și la metoda sa.
Ie de la o astfel de linie
router-ul face o matrice
Nu am scris un exemplu de utilizare ultima dată a acestei soluții. Să rezolvăm situația, dar înainte de aceasta vom termina routerul.
Transferați matricea regulilor de ruter la fișierul de configurare al cadrului. Această matrice va fi ocupată de dezvoltatori care vor scrie site-uri în cadrul nostru. Prin urmare, ar trebui să fie cât mai accesibil posibil.
În plus, puteți vedea că am schimbat partea dreaptă a matricei.
Vom face schimbări în codul routerului. și apoi vom analiza lucrarea sa.
În primul rând, vom umple matricea datelor de ieșire cu valorile implicite, pe care le luăm din config.php. Apoi analizăm calea de intrare $ pentru prezența variabilelor get. Dacă sunt, trebuie pur și simplu adăugate la matricea de date de ieșire. parse_url - separă URL-ul în componentele sale. O astfel de componentă este interogare. Acesta este totul în care adresa URL merge după semnul întrebării
Această linie a parametrilor key = value parșează parse funcția parse_str
C interogare parte a șirul dat afară, folosind acum regulile de expresii regulate, selectați datele necesare din calea.
Pe linia 12, vedem o căutare a tuturor regulilor din config. La 13, verificăm dacă regula următoare este potrivită. Dacă da, luăm o serie de rezultate și alternativ îl înlocuim cu elemente - partea dreaptă a regulii.
Regula "([a-z0-9 + _ \ -] +) / ([a-z0-9 + _ \ -] +) / ([0-9] +) / $ id ',
Apoi, matricea rezultatelor aplicării părții sale stângi la linia de intrare / utilizator / profil / 15 va fi o matrice
După pornirea acestei matrice, începând cu al doilea element, înlocuiți tastele $ ([a-z] +) din partea dreaptă a regulii $ controller / $ action / $ id
Ie pe linia 14, cu fiecare înlocuire, partea dreaptă a regulii se va schimba astfel
La prima vedere, acestea sunt acțiuni fără sens. Ce linie a fost pornită la intrarea / user / profile / 15 și aceasta a fost regula
Dar aceasta este doar la prima vedere. La ieșire, avem un URI standardizat, aplicând operația explode la acesta, obținem numele controlerului în primul element, în al doilea element al metodei, în id-id
Pentru mai multă claritate, adăugați sfârșitul matricei de reguli în config.php, regula
Ca urmare a acestei reguli, ruterul nostru, cum ar fi solicitarea unei pagini html (de exemplu /about.html fără a specifica un controler și o metodă), va trimite controlerului de pagină și metoda de citire, iar parametrul despre acesta va trece șirul despre
Folosim acest lucru pentru a crea un exemplu de blog pe baza cadrului nostru. Cu toate acestea, mai întâi, am îmbunătățit motorul șablon
templating
Pentru a începe crearea unui șablon pentru cadrul nostru, avem nevoie de un fel de pagină html. De exemplu, alegeți o temă gratuită de pe site-ul bootzrapa
Apăsați ctrl + u în browserul dvs. și copiați pur și simplu întregul cod sursă în fișierul viws / main.php - acesta este șablonul. Dar trebuie încă să fie finalizată. Eliminați toate stilurile de conectare și scripturile prin intermediul marcajului html. Vom conecta script-urile necesare prin php. Acest lucru oferă o anumită certitudine că în orice șablon va exista întotdeauna un set de fișiere din cadrul dvs., indiferent dacă acestea au fost folosite de designerul de layout atunci când faceți planul.
Pentru stiluri și scripturi din rădăcina proiectului, creați un folder separat. De obicei se numește bunuri. și în subfoldere - css - pentru stiluri, js - pentru scripturi și imagini - pentru imagini. În acest caz, ultimul dosar ar trebui să fie utilizat numai pentru acele imagini care participă la proiectarea site-ului, și nu în conținutul acestuia. Pentru completare, este mai bine să alocați un director separat - media / imagini în rădăcina site-ului.
Descărcați bootstrap-ul proaspăt și cea mai recentă versiune de jquery. Le-am pus în folderul assets / js / libs /. Restul stilurilor tematice va trebui să vă descărcați singur.
Toate stilurile și scripturile sunt în dosarele lor, dar cum să le conectați. În șablonul nostru nu există astfel de metode. Trebuie să fie scrise. Le vom adăuga la fișierul ideal / classes / controller.php. Adăugăm următoarele metode
- funcția privată addAsset ($ link, $ where = 'cap', $ asset = 'script', $ type = 'url')
- funcția publică funcțională addScript ($ link, $ where = 'head')
- funcția publică addStyleSheet ($ link, $ where = 'head')
- funcția publică addScriptDeclaration ($ link, $ where = 'head')
- funcția publică addStyleSheetDeclaration ($ link, $ where = 'head')
Va trebui să scriem cod pentru metoda addAsset, toate celelalte metode fiind un apel pentru addAsset cu parametri diferiți și sunt făcuți pentru comoditate.
Adăugați următorul câmp în clasă
Acesta va stoca date despre toate stilurile și scripturile plug-in-uri. Apoi adăugațiAsset
$ hash - se calculează numai pentru a nu se conecta la pagină cu aceleași scripturi de două ori. $ unde este locul unde conectăm scenariile. înainte sau înainte