Caracteristici noi în Laravel 5.2

În acest articol, voi examina noile caracteristici ale lui Laravel 5.2 și le voi descrie unul câte unul. Noile caracteristici sunt enumerate mai jos:

  • implicit model de legare model
  • formular de validare matrice
  • API-uri de limitare a ratei API
  • middleware grupuri
  • autentificare schela
  • mai mulți șoferi de pază pentru autentificare

Multiple Drivere de Gardă de Autentificare

Această caracteristică vă va ajuta, mai ales atunci când trebuie să aveți Doctrine ORM Auth cu mai mulți furnizori. În proiectele mele, prefer să fiu autentificat de administrator și de utilizator separat unul de celălalt; această caracteristică mă va ajuta să realizez acest lucru cu ușurință. Să vedem un exemplu config / auth.php:

// 'paza' => ['driver' => 'session', 'provider' => 'users', 'admin' => ['driver' => 'session' 'furnizor' => 'admin',], 'api' => ['driver' => 'token', 'provider' => '=> [' driver '=>' doctrine ',' model '=> App \ Entities \ Users :: class,],' admin '=> \ Entități \ Admin :: clasă,],], 

Acum, când îl folosiți Auth :: încercare ([...]), Laravel va apela garda implicită; deci dacă doriți să folosiți un anumit gardian, trebuie doar să îl contactați cu numele acestuia, cum ar fi Auth :: paza ( 'admin').

Pentru autentificarea în grupul dvs. de traseu cu o anumită pază, puteți apela numele pazei:

Route :: grup (['middleware' => ['auth: admin']], funcția () // ... 

Uneori, mai degrabă decât o simplă autentificare în aplicația dvs., doriți ca utilizatorii să atașeze o aplicație api_token la sfârșitul șirului de interogare și folosiți-le pentru a autentifica solicitarea acestora. TokenGuard vă va permite să obțineți acest lucru cu ușurință.

Dacă doriți să utilizați autentificarea token, mai întâi trebuie să adăugați un caracter unic de 60 de caractere api_token câmpul în tabela de date a modelului selectat (entitate în doctrină). Acum puteți folosi cu ușurință api pază în aplicația dvs..

Implicarea legării modelului de rută

Una dintre noile caracteristici ale lui Laravel 5.2, care este foarte practică, este legarea modelului de traseu. Puteți lega modelul pe traseu; înainte de asta l-am crea manual:

Route :: get ('user / id', funcție ($ id) $ user = Utilizatori :: findOrFail ($ id); // ...); 

Sau puteți face ceva de genul:

 // ... $ router-> model ('utilizator', 'App \ utilizator'); // ... $ router-> get ('profil / user', funcția (App \ user $ user) //); 

Laravel 5.2 face chiar mai ușor. Trebuie doar să treceți un parametru în închiderea rutei și aceasta va fi tratată automat ca un model de legare a unui traseu:

Route :: get ('user / id', funcția (App \ User $ user) // ...); 

Acum este mai ușor să legați modelul de ruta dvs..

În mod implicit, Laravel utilizează coloana id a modelului. Dar dacă vă așteptați să schimbe cartografia, puteți schimba modelul astfel:

Utilizatorul de clasă extinde Modelul funcția publică getRouteKeyName () return 'UserEmail';  

Elocvent implementează Illuminate Contracte \ \ Routing \ UrlRoutable contract, astfel încât să puteți suprascrie getRouteKeyName () metodă. Acesta definește ce coloană ar trebui folosită să o caute dintr-o adresă URL.

Grupuri de middleware

După cum puteți vedea în secțiunea de mai sus, am creat o altă pază pentru utilizatori și administratori. În acest caz, dacă doriți să atribuiți mai multe tipuri de middleware unui grup de rute pentru utilizator sau grupului de rute de administrare, Laravel 5.2 vă permite să creați o comandă rapidă cu un nume de cheie.

Pentru a defini grupul middleware, ar trebui să modificați fișierul kernel.php în folderul http:

protejate $ middlewareGroups = [// ... 'admin' => ['acl', 'web', 'auth',]]; 

Și acum îl puteți folosi cu ușurință în grupul dvs. de traseu.

Api Middleware de limitare a ratei

Dacă utilizați API-ul unei alte aplicații, cum ar fi GitHub, pentru solicitările care utilizează Authentication Basic sau OAuth, puteți efectua până la 5000 de solicitări pe oră. Această limitare se numește limitare a ratei. Dacă doriți să aveți așa ceva în aplicația dvs., puteți utiliza funcția nouă a lui Laravel 5.2. Laravel 5.2 a adăugat noi regulator middleware care se va ocupa de limitarea ratei. De exemplu, este posibil să aveți ceva de genul:

Route :: group (['prefix' => 'api', 'middleware' => 'throttle'], function () Route :: get ('user'; );); 

În mod implicit, regulator middleware permite 60 de încercări pe minut în kernel.php:

// ... 'api' => ["accelerație: 60,1", "auth: api",], 

Puteți să o modificați după cum doriți sau chiar să o personalizați pentru un anumit router:

Route :: grup (['prefix' => 'api', 'middleware' => 'accelerare: 10,1000'], function toate(); ); ); 

Schema de autentificare

Laravel 5.2 oferă o modalitate rapidă de a construi tot ceea ce aveți nevoie pentru autentificare folosind această comandă:

php artisan face: auth 

Utilizarea acestei comenzi în noua dvs. aplicație va face înregistrări și vizualizări de conectare, precum și rute pentru toate autentificările. Fișierul meu de rutare arată astfel:

Route :: grup (['middleware' => 'web'], functie () Route :: auth (); Route :: get ('/ home', 'HomeController @ index'); 

Route :: AUTH () este o scurtătură pentru definirea următoarelor rute:

// Căi de autentificare ... $ this-> get ('login', 'Auth \ AuthController @ showLoginForm'); $ this-> post ('login', 'Auth \ AuthController @ login'); $ this-> get ('logout', 'Auth \ AuthController @ logout'); // Înregistrarea rutelor ... $ this-> get ('register', 'Auth \ AuthController @ showRegistrationForm'); $ this-> post ('înregistrare', 'Auth \ AuthController @ register'); // Parola de resetare a rutelor ... $ this-> get ('password / reset / token?', 'Auth \ PasswordController @ showResetForm'); $ this-> post ('parola / email', 'Auth \ PasswordController @ sendResetLinkEmail'); $ this-> post ('parola / resetare', 'Auth \ PasswordController @ reset'); 

A HomeController va fi de asemenea generat, care este responsabil pentru solicitările de conectare la tabloul de bord al aplicației dvs. Dar puteți personaliza sau elimina acest controler pe baza nevoilor aplicației dvs..

Validarea formularului de formular

Unul dintre lucrurile interesante cu care am lucrat sunt datele din formatul matricei în HTML. Dacă plasați ceva în paranteze pătrate, atunci matricea rezultantă devine asociativă; în caz contrar, va fi numeric:

PHP print_r ($ _ POST) rezultatul va fi:

array ('name' => array ('first' => 'last' => ")) 

Acest lucru vă va ajuta să simplificați procesul de validare și de lucru cu formularele. Acum, să vedem validarea câmpurilor de utilizatori din Laravel 5.2:

 funcția publică Validator () $ this-> validate (Cerere :: all (), ['name. *. first' => 'string', ' ;  

S-ar putea să fi observat că forma validării este nume. *. Ultima, cu un asterisc în mijloc, ceea ce indică aproape că puteți adăuga cheia unei matrice sau orice altceva de care aveți nevoie.

Concluzie

Laravel 5.2 a fost o mică versiune care vă permite să lucrați mai bine și mai repede. Așa cum puteți observa, multe dintre aceste caracteristici sunt de asemenea ușor de învățat.

Cod