Nye funksjoner i Laravel 5.2

I denne artikkelen vil jeg se på de nye funksjonene til Laravel 5.2 og beskrive dem en etter en. De nye funksjonene er oppført nedenfor:

  • implisitt rutemodell bindende
  • form array validering
  • API-begrensningsbegrensende mellomvare
  • mellomvaregrupper
  • autentisering stillas
  • flere autentiseringsskjermdrivere

Flere godkjenningsvaktdrivere

Denne funksjonen vil hjelpe deg, spesielt når du trenger å ha Lære ORM Auth med flere leverandører. I mine prosjekter foretrekker jeg å ha admin og brukerautentisering skilt fra hverandre; Denne funksjonen vil hjelpe meg å oppnå dette enkelt. Se et eksempel config / auth.php:

// '' '' '' '>' '' '' ''> '' '' '' ''> '' '' '' 'provider' => 'admin',], 'api' => ['driver' => 'token', 'provider' => 'brukere',],], // ... 'providers' => ['brukere '=> [' driver '=>' doktrin ',' modell '=> App \ Entiteter \ Brukere :: klasse,],' admin '=> [' driver '=>' doktrin ',' modell '=> App \ Entiteter \ Admin :: klasse,],], 

Nå, når du bruker Auth :: forsøk ([...]), Laravel vil ringe standard vakt; så hvis du vil bruke en bestemt vakt, ring bare med navnet sitt, for eksempel Auth :: vakt ( 'admin').

For godkjenning i rutegruppen din med en bestemt vakt, kan du bare ringe vaktnavnet:

Rute :: gruppe (['middleware' => ['auth: admin']], funksjon () // ... 

Noen ganger, i stedet for en enkel pålogging i appen din, ønsker du at brukere skal legge til en api_token til slutten av søkeordet og bruk det for å autentisere deres forespørsel. TokenGuard lar deg enkelt oppnå dette.

Hvis du vil bruke token-godkjenning, må du først legge til en 60 tegn unik api_token feltet inn i databasetabellen til den valgte modellen (enhet i doktrinen). Nå kan du enkelt bruke api Vakt i appen din.

Implisitt Rutemodell Binding

En av de nye funksjonene i Laravel 5.2 som er veldig praktisk er rutemodell bindende. Du kan binde modellen til ruten din; før dette ville vi lage det manuelt:

Rute :: få ('bruker / id', funksjon ($ id) $ user = Brukere :: findOrFail ($ id); // ...); 

Eller du kan gjøre noe som:

 // ... $ router-> modell ('bruker', 'App \ Bruker'); // ... $ router-> get ('profile / user', funksjon (App \ User $ bruker) //); 

Laravel 5.2 gjør det enda enklere. Bare pass en parameter i rutenes lukking, og den vil automatisk behandle den som en rutemodell bindende:

Rute :: få ('bruker / id', funksjon (App \ Bruker $ bruker) // ...); 

Nå er det lettere å binde modellen til ruten din.

Som standard bruker Laravel modellens id-kolonne. Men hvis du forventer at det endrer kartleggingen, kan du endre modellen din slik:

klassen Bruker utvider modell offentlig funksjon getRouteKeyName () return 'UserEmail';  

Eloquent implementerer Belyse \ Kontrakter \ Routing \ UrlRoutable kontrakt, slik at du kan overstyre getRouteKeyName () metode. Det definerer hvilken kolonne som skal brukes til å se den opp fra en URL.

Middleware-grupper

Som du kan se i avsnittet ovenfor, har vi opprettet en annen vakt for bruker og admin. I dette tilfellet, hvis du vil tilordne flere mellomprogramvare til en brukerrutegruppe eller admin-rutegruppe, lar Laravel 5.2 deg lage en snarvei med et nøkkelnavn.

For å definere mellomvaregruppen, bør du endre kernel.php i http-mappen din:

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

Og nå kan du enkelt bruke den i rutegruppen din.

Api Rate-Limiting Middleware

Hvis du bruker API for et annet program som GitHub, kan du gjøre forespørsler om å bruke Basic Authentication eller OAuth, til opptil 5000 forespørsler per time. Denne begrensningen kalles prisbegrensning. Hvis du vil ha noe slikt i appen din, kan du bruke Laravel 5.2s nye funksjon. Laravel 5.2 lagt til ny Gasspedal middleware som håndterer hastighetsbegrensning. For eksempel kan du ha noe som:

Rute :: gruppe (['prefix' => 'api', 'middleware' => 'gasspjeld'], funksjon () Rute :: få ('bruker', funksjon () retur Brukere :: alle );; 

Som standard, Gasspedal middleware tillater 60 forsøk per minutt kernel.php:

// ... 'api' => ['gasspjeld: 60,1', 'auth: api',], 

Du kan endre det som du vil, eller til og med tilpasse det til en bestemt router:

Rute :: gruppe (['prefix' => 'api', 'middleware' => 'gasspjeld: 10,1000'], funksjon () Rute :: get ('bruker', funksjon alle(); ); ); 

Autentisering Stillas

Laravel 5.2 gir deg en rask måte å bygge opp alt du trenger for godkjenning ved hjelp av denne kommandoen:

php artisan lage: auth 

Ved å bruke denne kommandoen i den nye applikasjonen vil du få registrerings- og påloggingsvisninger, samt ruter for alle godkjenninger. Min rutefil ser ut som:

Rute :: gruppe (['middleware' => 'web'], funksjon () Rute :: auth (); Rute :: få ('/ home', 'HomeController @ index');); 

De Route :: auth () Metode er en snarvei for å definere følgende ruter:

// Autentiseringsruter ... $ this-> get ('login', 'Auth \ AuthController @ showLoginForm'); $ this-> post ('login', 'Auth \ AuthController @ login'); $ this-> get ('logout', 'Auth \ AuthController @ logout'); // Registreringsruter ... $ this-> get ('register', 'Auth \ AuthController @ showRegistrationForm'); $ this-> post ('register', 'Auth \ AuthController @ register'); // Password Reset Routes ... $ this-> get ('passord / tilbakestill / token?', 'Auth \ PasswordController @ showResetForm'); $ this-> post ('passord / e-post', 'Auth \ PasswordController @ sendResetLinkEmail'); $ this-> post ('passord / tilbakestill', 'Auth \ PasswordController @ reset'); 

EN HomeController vil også bli generert, som er ansvarlig for innloggingsforespørsler til programmets betjeningspanel. Men du kan tilpasse eller fjerne denne kontrolleren basert på behovene i søknaden din.

Form Array Validation

En av de interessante tingene jeg har jobbet med er matrisedata i HTML. Hvis du plasserer noe i firkantede parenteser, blir den resulterende gruppen associativ; ellers vil det være numerisk:

PHP print_r ($ _ POST) Resultatet vil være:

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

Dette vil hjelpe deg med å forenkle prosessen med validering og arbeid med skjemaer. La oss nå se validering for våre brukerfelt i Laravel 5.2:

 offentlig funksjon Validator () $ this-> validate (Forespørsel :: alle (), ['navn. *. først' => 'kreves | streng', 'navn. *. siste' => 'streng' ;  

Du har kanskje lagt merke til at formen på valideringen er etternavn, med en stjerne i midten, som nesten indikerer at du kan legge til nøkkelen til en matrise eller noe annet du trenger.

Konklusjon

Laravel 5.2 var en liten utgave som lar deg jobbe bedre og raskere. Som du kanskje ser, er mange av disse funksjonene også enkle å lære.