Routing, laravel în rusă

Fișierele de rutare implicite

Toate rutele (traseele) din Laravel sunt definite în fișierele de rute, care sunt situate în directorul de rute. Aceste fișiere sunt încărcate automat de cadru. Fișierul rute / web.php definește rutele pentru interfața web. Aceste rute fac parte din grupul de mediatori web. care oferă caracteristici precum starea sesiunii și protecția CSRF. Rutele din rutele / fișierul api.php nu acceptă stările și fac parte din grupul de mediere api.







Pentru majoritatea aplicațiilor, rutele din ruta / fișierul web.php sunt definite mai întâi.

Fișierul routes.php este încărcat de furnizorul de servicii RouteServiceProvider și este automat inclus în grupul de mediere web. care oferă acces la starea sesiunii și protecția CSRF. Majoritatea rutelor aplicației dvs. vor fi definite în acest fișier.

Metode de router disponibile

Router-ul vă permite să înregistrați rute pentru orice solicitare HTTP:

Uneori este necesar să înregistrați un traseu care să răspundă la solicitări HTTP de mai multe tipuri. Acest lucru se poate face folosind metoda de potrivire PHP (). Sau puteți înregistra un traseu care răspunde la cererile HTTP de toate tipurile utilizând metoda PHP any ():

Înregistrarea unui traseu pentru mai multe tipuri de solicitări

Uneori este necesar să înregistrați un traseu care să răspundă la solicitări HTTP de mai multe tipuri. Acest lucru se poate face folosind metoda de potrivire PHP () a frontului Traseu:

Sau puteți înregistra un traseu care răspunde la cererile HTTP de toate tipurile utilizând metoda PHP any ():

Puteți genera adrese URL pentru rutele de aplicații utilizând metoda URL url ():

Opțiuni ruta

Parametrii necesari

Desigur, uneori este posibil să fie nevoie să apucați segmente URI în traseul dvs. De exemplu, dacă trebuie să capturați un ID de utilizator dintr-o adresă URL. Acest lucru se poate face prin definirea parametrilor traseului:

Puteți defini cât mai mulți parametri doriți:

Parametrii traseului sunt întotdeauna închise în brațe și trebuie să conțină caractere alfabetice. Parametrii trasei nu pot conține caracterul -. Utilizați în schimb sublinierea _.

Opțional parametrii de traseu

Uneori trebuie să specificați un parametru de traseu, dar să îl faceți opțional. Acest lucru se poate face prin plasarea unui semn de întrebare. după numele parametrului. Nu uitați să setați valoarea implicită pentru variabila corespunzătoare rutei:

Restricții la expresiile regulate

Puteți restrânge formatul parametrilor dvs. de traseu utilizând metoda PHP where () pe instanța rutei. Metoda PHP unde () ia un nume de parametru și o expresie regulată care definește constrângerile parametrului:







Dacă doriți ca parametrul să fie întotdeauna limitat la expresia regulată specificată, puteți utiliza metoda modelului PHP (). Trebuie să definiți aceste modele în metoda PHP () a RouteServiceProvider:

Protecția CSRF

Această secțiune este relevantă pentru versiunea 5.2 și cea anterioară. În versiunea 5.3, a fost mutat la un articol separat despre CSRF.

De fiecare dată când definiți un formular HTML în aplicația dvs., trebuie să includeți câmpul ascuns al tokenului CSRF în acesta, astfel încât proxy-ul CSRF să poată verifica solicitarea. Pentru a genera un câmp de intrare ascuns _token. care conține un jeton CSRF, utilizați funcția auxiliară PHP csrf_field ():

Funcția PHP csrf_field () generează acest cod HTML:

Nu este nevoie să verificați manual cheia CSRF în interogări precum POST, PUT sau DELETE. intermediar VerifyCsrfToken. care face parte din grupul de mediatori web. va verifica automat potrivirea tokenului cererii de intrare cu jetonul stocat în sesiune.

Eliminarea URI din protecția CSRF

Uneori este necesar să excludem un set de URI de la protecția CSRF. De exemplu, dacă utilizați Stripe pentru a procesa plățile și sistemul lor de hacking pe web, trebuie să vă excludeți ruta de la dispozitivul de cârlig Web de la protecția Laravel CSRF.

Puteți exclude URI definind rutele din afara grupului mediatorilor web. care este inclus în fișierul defaults.php implicit. sau prin adăugarea acestor URI la proprietatea PHP $ exceptor a reseller-ului VerifyCsrfToken:

X-CSRF-TOKEN

În plus față de căutarea cheii CSRF în parametrii "POST". proxy-ul VerifyCsrfToken va verifica dacă antetul solicitării este X-CSRF-TOKEN. De exemplu, puteți stoca cheia într-o etichetă meta:

Când ați creat meta-tag-ul. Puteți adăuga un jeton în anteturile tuturor solicitărilor utilizând o bibliotecă, cum ar fi jQuery. Aceasta oferă o protecție CSRF simplă și convenabilă pentru aplicațiile bazate pe AJAX:

X-XSRF-TOKEN

Diferența dintre X-CSRF-TOKEN și X-XSRF-TOKEN este că prima folosește o valoare text simplă, iar a doua utilizează o valoare criptată. cookie-ul din Laravel este întotdeauna criptat. Dacă utilizați funcția PHP csrf_token () pentru a trece valoarea cheie. atunci probabil că trebuie să utilizați antetul X-CSRF-TOKEN.

Model de legare

Când se implementează un ID model în acțiunea unei rute sau a unui controler, este adesea necesar să se obțină un model care să corespundă acestui ID. Modele de legare - o modalitate convenabilă de a implementa automat exemple de instanțe direct pe rutele dvs. De exemplu, în loc să implementați un ID de utilizator, puteți încorpora întregul exemplu de model de utilizator. care corespunde acestui ID.

Implicare obligatorie

Laravel include automat modelele Eloquent definite în acțiunile rutei sau ale controlerului, ale căror variabile au nume care se potrivesc cu segmentul traseului. De exemplu:

În acest exemplu, Laravel va încorpora automat o instanță a modelului care are un ID care corespunde valorii corespunzătoare din URI-ul de solicitare, deoarece variabila Eloquent este utilizatorul PHP $. Calea definită în traseu este identică cu segmentul URI al rutei. Dacă o instanță de model care se potrivește nu este găsită în baza de date, răspunsul HTTP 404 va fi generat automat.

Dacă doriți ca o altă coloană a bazei de date să utilizeze id-ul coloanei în loc de coloana id, puteți înlocui metoda PHP getRouteKeyName () în modelul dvs. elocvent:

Explicarea obligatorie

Pentru a înregistra o obligație explicită, utilizați metoda modelului PHP () pentru a specifica o clasă pentru acest parametru. Trebuie să determinați legăturile explicite ale modelului dvs. în metoda PHP boot () din clasa RouteServiceProvider:







Trimiteți-le prietenilor: