I denne Nettuts + mini-serien bygger vi et webprogram fra grunnen, mens du dykker inn i et flott nytt PHP-rammeverk som raskt tar opp damp, kalt Laravel.
I denne leksjonen lærer vi om noen svært nyttige Laravel-funksjoner: filtre, og både validering og filbiblioteker.
Velkommen tilbake til våre webprogrammer fra bunnen av med Laravel-serien! I den andre opplæringen av min mini-serie lærte vi mye om Laravels ORM-implementering:
Hvis du ikke har sett det ennå, oppfordrer jeg deg til å sjekke ut den første og andre delen av mini-serien - det vil gjøre det betydelig lettere å følge med, da vi bygger vår testapplikasjon, Instapics, gjennom hver del.
Så la oss komme i gang!
I et nøtteskall er filtre funksjoner som vi kan kjøre på ruter før
eller etter
forespørselssyklusen. Det er spesielt nyttig for ting som autentisering og logging. For å registrere et filter, må vi legge til noe som følger med application / routes.php fil:
Rute :: filter ('myfilter', funksjon () // Hva du vil at filteret skal gjøre);
Etter at vi har registrert filteret, må vi feste det på en rute, slik som:
Route :: any ('/', array ('before' => 'filter', funksjon () // Hva du vil at ruten skal gjøre));
I eksemplet ovenfor, er myfilter
vil utløse på alle forespørsler til indekssiden (dvs.. /). La oss si at vi ønsket å implementere et autentiseringsfilter for dashbord
rute:
Rute :: filter ('auth', funksjon () hvis (Auth :: gjest ()) return Omdirigering :: til ('hjem');); Route :: any ('dashboard', array ('før' => 'auth, funksjon () return View :: make (' dashboard '););
Koden ovenfor vil omdirigere alle uautoriserte forespørsler til dashbord rute til hjem rute.
Som standard inneholder Laravel to filtre, før
og etter
, som kjører før og etter hver forespørsel på en søknad. Disse er vanligvis hvor du plasserer ting, for eksempel forespørsel logging, legge til globale eiendeler eller skyte globale hendelser. For eksempel:
Rute :: filter ('etter', funksjon ($ respons) Log :: skriv ('forespørsel', 'Forespørsel ferdig på' dato ('d M, Y - h: i: sA'). '. \ N \ nRequest informasjon: \ n '. var_export (Input :: get (), true)););
Dette skriver a be om
skriv loggmeldingen til programmets logg, og lister inn noen innspill fra forespørselen.
Hvis du finner deg selv å bruke det samme filteret på flere ruter, kan du gjøre bruk av Rutegrupper å gruppere dem alle sammen og redusere koderepetisjon:
Rute :: filter ('admin_auth', funksjon () if (Auth :: gjest () ||! Auth :: bruker () -> isAdmin ()) retur Omdirigering :: til ('hjem'); ); Rute :: gruppe (array ('før' => 'admin_auth'), funksjon () Rute :: få ('admin', funksjon () return View :: make ('admin');); Rute: : get ('useradmin', funksjon () return View :: make ('useradmin');););
For applikasjoner (som vår egen Instapics) som benytter kontroller, kan vi bruke filtre ved hjelp av $ Dette-> filter ()
fungere i kontrollerens konstruktør:
offentlig funksjon __construct () $ this-> filter ('før', 'auth');
Disse filtrene, som ruter, kan også tilpasses for å bare gjelde enkelte HTTP-verb og bestemte kontrollerhandlinger:
offentlig funksjon __construct () // call'log_download'filter for all nedlasting / fil GET forespørsler $ this-> filter ('after', 'log_download') -> only (array ('file')) -> på få'); // ring "auth_download" -filteret for alle nedlastinger / * forespørsler, bortsett fra "kø" -aksjonen $ this-> filter ('før', 'auth_download') -> unntatt (array ('kø'));
Laravel er innebygd validering gjør det enkelt å bruke validering til en rekke verdier, mer spesifikt, form input. For å gjøre det, trenger du bare å bygge to arrays:
// Få vårt innspill fra Input-biblioteket $ input = Input :: all (); // Opprett våre valideringsregler $ rules = array ('email' => 'required | email | unique: users', 'password' => 'required'); // Få en $ validering instans for vår feilkontroll $ validation = Validator :: lage ($ input, $ rules); // Sjekk om valideringen lykkes hvis ($ validering-> feiler ()) // gjør noe med feilmeldingene fra $ validering instans $ validering-> feil;
Nedenfor er en liste over valideringsregler som kan brukes med Laravel-valideringsbiblioteket. Som i eksemplet ovenfor, er du fri til å blande og matche disse ved å skille dem med et rør ("|"):
nødvendig
- verdien skal være tilstede i inngangsarrangementet 'email' => 'nødvendig'
alfa
- verdien bør bare bestå av alfabetetegn 'full_name' => 'alfa'
alpha_num
- verdien bør bare bestå av alfanumeriske tegn 'brukernavn' => 'alfa_num'
alpha_dash
- verdien bør bare bestå av alfanumeriske, bindestreker og / eller understreker 'user_name' => 'alpha_dash'
størrelse
- verdien skal bare ha en gitt lengde, eller være lik tallet hvis det er numerisk 'api_key' => 'størrelse: 10'
'order_count' => 'størrelse: 10'
mellom
- verdien er inklusiv mellom et spesifisert område 'order_count' => 'mellom: 1,100'
min
- verdien er minst gitt 'order_count' => 'min: 1'
max
- verdien er lik eller mindre enn den oppgitte 'order_count' => 'max: 100'
numerisk
- verdien er numerisk 'order_count' => 'numerisk'
heltall
- verdien er et heltall 'order_count' => 'heltall'
i
- verdien er inneholdt i den oppgitte 'tshirt_size' => 'i: xsmall, liten, medium, stor, xlarge'
ikke i
- verdien er ikke gitt 'tshirt_size' => 'not_in: xsmall, xlarge'
bekreftet
- vil sjekke om nøkkel_bekreftelse
eksisterer og er lik verdien 'passord' => 'bekreftet'
Dette vil sjekke om Passord bekreftelse
verdien eksisterer og er lik passord
akseptert
- Dette vil sjekke om verdien er satt til "ja" eller 1. Nyttig for boksene 'terms_of_service' => 'accepted'
samme
- verdien er den samme som verdien for det oppgitte attributtet 'passord' => 'samme: confirm_password'
forskjellig
- verdien skal være forskjellig fra verdien til det oppgitte attributtet 'passord' => 'annerledes: old_password'
kamp
- verdien skal samsvare med det gitte regulære uttrykket 'user_name' => 'match: / [a-zA-Z0-9] * /'
unik
- sjekker for unikhet av verdien i den oppgitte tabellen. 'user_name' => 'unikt: brukerens'
En gitt kolonne er også akseptert dersom kolonnens navn ikke er det samme som attributtnavnet.
// hvis kolonnen i brukerbordet er brukernavn, // vi kan gi dette i gitt slik: 'user_name' => 'unikt: brukere, brukernavn'
Det er tider når vi ønsker å se etter unikhet, men ignorere en bestemt post (vanligvis posten som er knyttet til den nåværende brukeren). Vi kan gjøre dette ved å legge til en tredje gitt, som skal være IDen til den posten i tabellen.
// ID 10 er registrerings-ID for gjeldende bruker 'user_name' => 'unikt: brukere, brukernavn, 10'
finnes
- verdien bør finnes i en tabell 'kategori' => 'eksisterer: kategorier'
Dette aksepterer også et sekund gitt hvis vi vil endre kolonneavnet for å sjekke.
'category' => 'eksisterer: kategorier, kategorinavn'
før
- verdien skal være en dato før den oppgitte datoen 'publish_date' => 'før: 2012-07-14'
etter
- verdien skal være en dato etter den oppgitte datoen 'publish_date' => 'etter: 2012-07-14'
e-post
- verdien skal være i et gyldig e-postformat 'subscriber_email' => 'email'
url
- verdien er i et gyldig url format 'github_profile' => 'url'
active_url
- verdien er i et gyldig url format og er aktiv 'github_profile' => 'active_url'
mimes
- sjekker for mime-typen av en opplastet fil. Du kan bruke hvilken som helst mime-type verdi fra config / mimes.php fil 'avatar' => 'mimes: jpg, gif, png, bmp'
bilde
- filen skal være et bilde 'avatar' => 'bilde'
Du kan også bruke max
validator her for å sjekke for en fils størrelse i kilobytes
'avatar' => 'bilde | max: 100'
Når du ringer til Validator-> svikter ()
eller Validator-> passerer ()
metode samler biblioteket alle feilene i en klasse som er tilgjengelig via Validator-> feil
. Du vil da kunne hente disse feilene med noen funksjoner i feil
klasse. Laravel gir noen kule funksjonalitet for å automatisere feilhåndtering som passer i de fleste POST / REDIRECT / GET-scenarier:
class Register_Controller utvider Base_Controller public $ restful = true; offentlig funksjon get_index () return View :: make ('register.index'); offentlig funksjon post_index () $ rules = array ('email' => 'kreves | e-post | unikt: brukere', 'passord' => 'bekreftet'); $ validation = Validator :: make (Input :: get (), $ rules); hvis ($ validering-> feiler ()) // Send $ valideringsobjektet til den omdirigerte siden returnere Omdirigering :: til ('registrer') -> with_errors ($ validering);
Her bruker vi with_errors
metode for omdirigere
bibliotek. Dette binder automatisk til $ feil
variabel i visningen for hvor vi omdirigerer - i dette tilfellet, registrer / indeks
side:
På visningsfilen bruker vi $ Errors-> har ()
Metode for å sjekke om det finnes en feil for det aktuelle feltet. Hvis det gjør det, bruker vi deretter $ Errors-> get ()
Metode for å vise feilmeldingene. Den andre parameteren i denne metoden kan brukes til å gi en mal om hvordan vi viser feilmeldingen.
Siden de fleste vil ønske å endre feilmeldingene for Laravel for å passe til programmets merkevarebygging eller språk, tillater Validation-biblioteket også å tilpasse feilmeldingene som genereres ved ganske enkelt å legge til i en $ messages
array til Validere :: gjøre
funksjonsanrop:
$ rules = array ('email' => 'required | email | unique: users', 'password' => 'bekreftet'); $ messages = array ('email_required' => 'Vennligst oppgi en e-postadresse', 'email_email' => 'Vennligst oppgi en gyldig e-postadresse', 'email_unique' => 'Epostadressen du oppgav er allerede brukt' password_confirmed '=>' Ditt passordbekreftelse stemmer ikke overens med passordet ditt. '); $ validation = Validator :: make (Input :: get (), $ rules, $ messages);
Det er to måter å opprette en $ messages
matrise:
$ messages = array ('required' => 'Feltet: attributt skal kreves.', 'same' => 'The: attributtet og: andre må matche.', 'size' => 'Attributtet må være nøyaktig: størrelse. ',' mellom '=>' Attributtet må være mellom: min -: maks. ',' i '=>' Attributtet må være en av følgende typer:: verdier ');
Dette vil endre standard feilmeldinger for alle felt som har Kreves, samme, størrelse, mellom og inn
regler. Her ser vi også at Laravel bruker plassholdere til å erstatte bestemte verdier i feilmeldingen. :Egenskap
vil forandre seg i feltattributtet (sans understreker) det er for. :annen
brukes til samme
regelen, som refererer til den andre attributtet den skal samsvare med. :størrelse
refererer til den definerte størrelsen i regelparametrene. : min
og : max
er minimum og maksimumsverdier, og : verdier
er listen over verdier vi angav at feltets verdi må være i.
$ messages = array ('email_required' => 'Vennligst oppgi en e-postadresse', 'email_email' => 'Vennligst oppgi en gyldig e-postadresse', 'email_unique' => 'Epostadressen du oppgav er allerede brukt' password_confirmed '=>' Ditt passordbekreftelse stemmer ikke overens med passordet ditt. ');
email_required
er feilmeldingen som brukes når e-post
attributtet mislykkes nødvendig
regel, email_email
er feilmeldingen som brukes når e-post
mislykkes e-post
regelen og så videre.
Hvis du finner deg selv omvendt å gjenopprette de samme egendefinerte meldingene, ville det være lettere å bare angi de egendefinerte feilmeldingene globalt. Du kan gjøre det ved å redigere application / langauge / en / validation.php fil og redigere tilpasset
array funnet der:
... 'custom' => array (' email_required '=>' Vennligst oppgi en e-postadresse ',' email_email '=>' Vennligst oppgi en gyldig e-postadresse ',' email_unique '=>' Epostadressen du oppgav, brukes allerede ',' password_confirmed '=>' Ditt passordbekreftelse stemmer ikke overens med passordet ditt. '); ...
Laravel s filer biblioteket gjør det enkelt å håndtere filopplastinger ved å bruke Input :: opplasting
metode, som er et enkelt omslag til PHP move_uploaded_file
funksjon:
Input :: opplasting ('input_name', 'katalog / til / lagre / fil', 'filnavn.extension');
For å validere filopplastingene, kan du bruke Validator
bibliotek vi diskuterte over som:
$ input = array ('upload' => Input :: fil ('opplasting')); $ rules = array ('upload' => 'mimes: zip, rar | max: 500'); $ validator = Validator :: lage ($ input, $ rules);
De filer biblioteket har også noen filmanipuleringsmetoder, som:
// Få en fil $ data = File :: get ('path / file.extension'); // Skriv en fil Fil :: put ('path / file.extension', $ data); // Vedlegg til en fil Fil :: legg til ('bane / fil.extension', $ data);
Laravel gir også noen generelle formålstilknyttede funksjoner som kan brukes i hele koden din. For eksempel, Filutvidelse
metode returnerer utvidelsen av et streng filnavn:
// Dette vil returnere 'zip' File :: extension ('data.zip');
De Fil :: er
funksjonen sjekker om en fil er av en bestemt type. Vær oppmerksom på at dette ikke bare sjekker filens utvidelse, men bruker Fileinfo
PHP-utvidelse for å lese det faktiske innholdet i filen. Dette er nyttig for å bestemme at en fil egentlig har en korrekt filtype:
// Returnerer sant hvis filen er en zip-fil, falsk hvis ellers Fil :: er ('zip', 'path / file.zip');
En liste over kompatible utvidelser kan ses i application / konfig / mimes.php.
Når det gjelder mime typer, kan du også bruke Fil :: mime
funksjon for å få mime typer av en forlengelse. Den returnerte mime-typen er basert på det samme mimes.php fil:
// Dette vil returnere bilde / png Fil :: mime ('png')
De Fil :: cpdir
og Fil :: rmdir
metoder kan kopiere og slette en katalog, henholdsvis.
Fil :: cpdir ('katalog / til / kopi', 'destinasjon / katalog'); // Fil :: rmdir er en rekursiv sletting, så det vil slette alle filer og mapper i katalogen. Fil :: rmdir ( 'katalog / til / slette');
Nå som vi har lært alt om filtre, de Validering bibliotek og filer bibliotek, la oss implementere dem i vår søknad, Instapics.
auth
FilterBase_Controller
La oss starte med å sørge for at brukerne våre bare kan se godkjente sider ved å opprette en auth
filter som kjører før alle forespørsler. Siden vi bruker kontrollerbasert ruting, må vi konfigurere våre filtre i vår kontroller. La oss sette filtene i __construct
metode av Base_Controller
for å sikre at auth
Filter kjører på alle kontroller som strekker seg. Mens vi er på det, la vi legge til en nonauth
filtrer også for å sikre at folk bare kan besøke bestemte sider når de ikke er autentisert:
klassen Base_Controller utvider kontrolleren offentlig funksjon __construct () // Assets Asset :: add ('jquery', 'js / jquery-1.7.2.min.js'); Asset :: add ('bootstrap-js', 'js / bootstrap.min.js'); Asset :: add ('bootstrap-css', 'css / bootstrap.min.css'); Asset :: add ('bootstrap-css-responsive', 'css / bootstrap-responsive.min.css', 'bootstrap-css'); Asset :: add ('style', 'css / style.css'); ordnede :: __ konstruksjon (); // Filtre $ class = get_called_class (); bytte ($ klasse) case 'Home_Controller': $ this-> filter ('før', 'nonauth'); gå i stykker; tilfelle 'User_Controller': $ this-> filter ('before', 'nonauth') -> only (array ('authenticate')); $ dette-> filter ('før', 'auth') -> bare (array ('logout')); gå i stykker; standard: $ this-> filter ('før', 'auth'); gå i stykker;
Her definerer vi eventuelle forespørsler til hjem
ruten vil kreve en ikke-godkjent bruker, noe som er bra siden dette er der påloggingsskjermen ligger. Enhver annen forespørsel vil imidlertid kreve en autentisert bruker. For User_Controller
, Vi har faktisk to separate metoder som krever både ikke-godkjente brukere (autentiser) og autentiserte brukere (logout), så vi benytter seg av bare
Metode for å spesifisere hvilke kontrolleringshandlinger filtre gjelder for.
routes.php
Nå åpen application / routes.php, som er hvor vi skal definere auth
og nonauth
filtre. Vær oppmerksom på at du kanskje allerede har en eksisterende auth
filterdefinisjon, så bare erstatt den med den vi har under:
Rute :: filter ('auth', funksjon () hvis (Auth :: gjest ()) returnere Omdirigering :: til ('hjem');); Rute :: filter ('nonauth', funksjon () hvis (Auth :: gjest () == false) returnere Omdirigering :: til ('dashbord'););
I auth
filter, vi sjekker om en bruker er autentisert med Auth
bibliotek. Hvis brukeren ikke er autentisert, omdirigerer vi dem tilbake til hjem
rute hvor påloggingsskjermen er, ellers kan de fortsette. Det samme med nonauth
filter - kontroller om brukeren er autentisert, hvis han er, og omdiriger deretter han til dashbordet.
Nå som vi vet litt mer om hvordan du håndterer filopplastinger i Laravel, la oss begynne å implementere en av Instapics'hovedfunksjoner - opplasting av bilder. Begynn med å opprette en mappe som heter application / visninger / plugins mappe, og inne i dette oppretter du en Blade-visning fil som heter upload_modal.blade.php. Lim inn følgende HTML:
Last opp en ny Instapic
Avbryt
La oss utløse dette modale skjemaet med en knapp - legg til dette inn application / visninger / oppsett / main.blade.php, etter .nav-kollaps
div:
@section ('post_navigation') @if (Auth :: check ()) @include ('plugins.loggedin_postnav') @endif @yield_section@section ( 'navigasjon')
- Hjem
@yield_section
Her inkluderer vi en visningsfil som heter loggedin_postnav
hvis brukeren er logget inn. Dette er hvor vi legger til knappen for modal opplastingsskjema. I samme fil legger du til dette etter .container
div:
@yield ( 'innhold')@section ('modals') @if (Auth :: check ()) @include ('plugins.upload_modal') @endif @yield_section
Det er her vi inkluderer upload_modal
HTML. Vi forsikrer deg om at brukeren ikke er logget inn før du inkluderer denne HTML-filen, siden det som knapputløseren, ville dette egentlig ikke være nødvendig hvis brukeren ikke er autentisert.
Lag nå application / synspunkter / plugins / loggedin_postnav.blade.php
Oppdater siden, og du bør se den nye opplastningsknappen - klikk på den for å se at den fungerer!
Nå som vi har våre front-end ting jobber, la oss begynne å jobbe på den bakre delen av skjemaet. Skape application / kontrollere / photo.php, og sett inn følgende kode for kontrolleren:
klasse Photo_Controller utvider Base_Controller offentlig funksjon action_upload () $ input = Input :: all (); $ extension = File :: extension ($ input ['foto'] ['navn']); $ directory = path ('public'). 'opplastinger /'. sha1 (Auth :: user () -> id); $ filename = sha1 (Auth :: user () -> id.time ()). ". $ extension"; $ upload_success = Input :: opplasting ('foto', $ katalog, $ filnavn); hvis ($ upload_success) Session :: flash ('status_success', 'Vellykket lastet opp nye Instapic'); else Session :: flash ('status_error', 'Det oppstod en feil under opplasting av ny Instapic - prøv igjen.'); hvis ($ upload_success) $ photo = nytt bilde (array ('location' => URL :: til ('opplastinger /'. sha1 (Auth :: user () -> id). '/'. $ filnavn) , 'description' => $ input ['description']))); Auth :: bruker () -> bilder () -> sett ($ bilde); returnere omdirigering :: til ('dashbord');
Prøv det - du bør kunne begynne å laste opp nye installasjoner.
La oss legge til noen valideringsregler for dette for å sikre at brukeren bare sender de riktige tingene. Oppdater kontrolleren med følgende:
klasse Photo_Controller utvider Base_Controller offentlig funksjon action_upload () $ input = Input :: all (); hvis (isset ($ input ['description'])) $ input ['description'] = filter_var ($ input ['description'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); $ rules = array ('photo' => 'required' image | max: 500 ', // bildeopplastning må være et bilde og må ikke overstige 500kb' description '=>' required '// beskrivelse er nødvendig); $ validation = Validator :: make ($ input, $ rules); hvis ($ validering-> mislykkes ()) return Omdirigering :: til ('dashbord') -> with_errors ($ validering); $ extension = File :: extension ($ input ['foto'] ['navn']); $ directory = path ('public'). 'opplastinger /'. sha1 (Auth :: user () -> id); $ filename = sha1 (Auth :: user () -> id.time ()). ". $ extension"; $ upload_success = Input :: opplasting ('foto', $ katalog, $ filnavn); hvis ($ upload_success) $ photo = nytt bilde (array ('location' => URL :: til ('uploads /'. sha1 (Auth :: user () -> id). '/'. $ filnavn) 'description' => $ input ['description']))); Auth :: bruker () -> bilder () -> sett ($ bilde); Session :: flash ('status_success', 'Vellykket lastet opp den nye Instapic'); else Session :: flash ('status_error', 'Det oppstod en feil under opplasting av den nye Instapic - prøv igjen.'); returnere omdirigering :: til ('dashbord');
Se hvordan vi validerer inngangen? Vi sørger for at bildet er til stede, et bilde og mindre enn 500kb. Vi sørger også for at beskrivelsen er tilstede etter sanitet. Vi kan ikke se våre feilmeldinger ennå, men la oss fikse det ved å legge til noen HTML for å gjengi våre feilmeldinger. Åpen application / visninger / oppsett / main.blade.php og legg til følgende inne i .container
div:
@include ('plugins.status') @yield ('innhold')
Lag nå application / synspunkter / plugins / status.blade.php. Det er her vi skal gjengi de faktiske feilmeldingene. Vi legger også til støtte for sesjonsbaserte statusmeldinger (som den vi bruker inne i $ upload_success
sjekk på Bilder
kontrollerkode):
@if (isset ($ errors) && count ($ errors-> all ())> 0)x@elseif (! is_null (Session :: get ('status_error'))))Oh Snap!
@foreach ($ errors-> all ('
- :budskap
') som $ melding) $ message @endforeachx@endif @if (! is_null (Session :: get ('status_success'))))Oh Snap!
@if (is_array (Session :: get ('status_error'))))@foreach (Session :: get ('status_error') som $ feil)
@else Session :: get ('status_error') @endif- $ error
@endforeachx@slutt omSuksess!
@if (is_array (Session :: get ('status_success'))))@foreach (Session :: get ('status_success') som $ suksess)
@else Session :: get ('status_success') @endif- $ suksess
@endforeach
Prøv å forårsake feil på opplastingsskjemaet nå ved å sende inn uten fil valgt eller uten beskrivelse (siden begge er påkrevd). Du bør se feilmeldingene som blir gjengitt på toppen:
Nå som vi vet hvordan du bruker Laravel Validering bibliotek, la oss gå tilbake til vårt første skjema - påmeldings- og registreringsskjemaet. For øyeblikket bruker vi bare en ekko
for å se at innlogging eller registrering mislyktes - la oss erstatte det med riktig validering. Åpen application / kontrollere / user.php og oppdater det slik:
klasse User_Controller utvider Base_Controller offentlig funksjon action_authenticate () $ email = Input :: get ('email'); $ password = Input :: get ('passord'); $ new_user = Input :: get ('new_user', 'off'); $ input = array ('email' => $ email, 'password' => $ passord); hvis ($ new_user == 'on') $ rules = array ('email' => 'required | email | unique: users', 'password' => 'required'); $ validation = Validator :: make ($ input, $ rules); hvis ($ validering-> mislykkes ()) return Omadressering :: til ('hjem') -> with_errors ($ validering); prøv $ user = ny bruker (); $ user-> email = $ email; $ user-> password = Hash :: make ($ password); $ Bruker-> Lagre (); Auth :: innlogging ($ bruker); returnere omdirigering :: til ('dashbord'); fangst (Unntak $ e) Session :: flash ('status_error', 'Det oppstod en feil under oppretting av en ny konto - prøv igjen.'); returnere omdirigering :: til ('hjem'); else $ rules = array ('email' => 'required | email | exists: users', 'password' => 'required'); $ validation = Validator :: make ($ input, $ rules); hvis ($ validering-> mislykkes ()) return Omadressering :: til ('hjem') -> with_errors ($ validering); $ credentials = array ('brukernavn' => $ email, 'passord' => $ passord); hvis (Auth: forsøk ($ credentials)) return Omdirigering :: til ('dashbord'); else Session :: flash ('status_error', 'Din epost eller passord er ugyldig - prøv igjen.'); returnere omdirigering :: til ('hjem'); offentlig funksjon action_logout () Auth :: logout (); Omdirigere :: til ( 'home / index');
Siden vi har gjort våre statusmelding gjengivelser på en modulær måte, trenger vi ikke engang å skrive noen ekstra HTML for å se feilmeldingene i aksjon! Bare prøv det ut!
I den tredje opplæringen i vår Laravel serier, lærte vi:
Laravel kommer med mange av disse småfunksjonene og bibliotekene, som selv om de kan implementeres på andre måter, blir enklere og enklere (for eksempel filopplastninger i en enkelt linje!) Ved å vedta Laravels uttrykksfulle natur. Det er disse små tidsbesparende bibliotekene legger opp og over tid, sparer deg massevis av bortkastet produktivitetsomskrivningskode.
Neste i våre Webapplikasjoner fra Scratch med Laravel-serien, lærer vi mer om hendelser, migreringer og noen avansert bruk av Eloquent ORM!
Hva synes du om Laravel-bibliotekene som er omtalt i opplæringen? Er det noe du synes er nyttig? Gi meg beskjed i kommentarene! Og, hvis du er Tuts + Premium-medlem, hold deg oppdatert for vårt kommende Laravel Essentials kurs!