În această mini-serie Nettuts +, vom construi o aplicație web de la zero, în timp ce vom scufunda într-un nou cadru PHP care absoarbe rapid aburi, numit Laravel.
În această lecție, vom învăța despre câteva funcții Laravel foarte utile: filtre și atât bibliotecile de validare și fișiere.
Bine ați venit înapoi la aplicațiile noastre Web de la Scratch cu seria Laravel! În cel de-al doilea tutorial al mini-seriei noastre, am învățat multe despre implementarea ORM a Laravel:
Dacă nu ați văzut-o încă, vă recomand să examinați prima și a doua parte a mini-serie - aceasta va face mult mai ușor să urmăriți împreună, pe măsură ce construim aplicația noastră de testare, Instapics, prin fiecare parte.
Deci sa începem!
Pe scurt, filtrele sunt funcții pe care le putem rula pe rute inainte de
sau după
ciclul cererii. Este util în special pentru lucruri precum autentificarea și logarea. Pentru a înregistra un filtru, trebuie să adăugăm ceva de genul: application / routes.php fişier:
Route :: filter ('myfilter', funcția () // Ce vrei să facă filtrul);
După ce înregistrăm filtrul, trebuie să îl atașăm la un traseu, după cum urmează:
Traseu :: orice ('/', array ('înainte' => 'filtru', funcție () // Ce vrei să facă traseul));
În exemplul de mai sus, myfilter
va declanșa la toate cererile pagina de index (adică. /). Să presupunem că am vrut să implementăm un filtru de autentificare pentru tablou de bord
traseu:
Traseu :: filtru ('auth', functie () if (Auth :: guest ()) returneaza Redirect :: to ('home');); Route :: orice ('dashboard', array ('înainte' => 'auth, function () retur View :: make (' dashboard '););
Codul de mai sus va redirecționa toate solicitările neautorizate la tablou de bord traseu spre Acasă traseu.
În mod implicit, Laravel include două filtre, inainte de
și după
, care rulează înainte și după fiecare cerere pe o aplicație. Acestea sunt de obicei în cazul în care vă așezați lucruri, cum ar fi înregistrarea cererilor, adăugarea de active globale sau lansarea evenimentelor globale. De exemplu:
Route :: filtru ('după', funcție ($ răspuns)) Log :: write ('request', 'Request finished'). \ nRequest Information: \ n '. var_export (Intrare :: get (), true)););
Acest lucru scrie a cerere
introduceți mesajul de jurnal în jurnalul aplicației și listează orice intrare din cerere.
Dacă găsiți că aplicați același filtru pe mai multe rute, puteți utiliza Grupuri de traseu să le grupezi împreună și să reduci repetarea codului:
Route :: filtru ('admin_auth', function () if (Auth :: guest () || Auth :: user () -> isAdmin ()) ); Route :: grup (array ('înainte' => 'admin_auth'), function () Route :: get ('admin', function () : get ('useradmin', function () retur View :: make ('useradmin');););
Pentru aplicații (cum ar fi propriile noastre Instapics) care folosesc controlorii, putem aplica filtrele folosind $ This-> filtru ()
funcția în constructorul controlerului:
funcția publică __construct () $ this-> filter ('înainte', 'auth');
Aceste filtre, cum ar fi rutele, pot fi de asemenea personalizate pentru a se aplica numai anumitor verbe HTTP și acțiunilor specifice ale controlorilor:
funcția publică __construct () // call 'log_download' filtru pentru toate cererile de descărcare / fișier GET $ this-> filter ('după', 'log_download') -> numai (array (' obține'); // apela filtrul "auth_download" pentru toate cererile de descărcare / *, cu excepția acțiunii 'queue' $ this-> filter ('înainte', 'auth_download') -> except (array ('queue'));
Validarea încorporată a lui Laravel facilitează aplicarea validării la orice serie de valori, mai exact, formularul de intrare. Pentru a face acest lucru, pur și simplu trebuie să construiți două matrice:
// Obținerea contribuției noastre din biblioteca de intrare $ input = Input :: all (); // Creați regulile de validare $ rules = array ('email' => 'obligatoriu | email | unic: utilizatori', 'parolă' => 'necesar'); // Obținerea unei instanțe de validare $ pentru eroarea noastră de verificare $ validation = Validator :: make ($ input, $ rules); // Verificați dacă validarea a reușit în cazul în care ($ validation-> fails ()) // face ceva cu mesajele de eroare de la validarea $ $ instanță $ validation-> errors;
Mai jos este o listă de reguli de validare care pot fi utilizate cu biblioteca de validare Laravel. Ca și în exemplul de mai sus, puteți să le amestecați și să le potriviți separându-le cu o conductă ("|„):
necesar
- valoarea ar trebui să fie prezentă în matricea de intrare 'email' => 'necesar'
alfa
- valoarea ar trebui să fie formată numai din caractere alfabetice 'full_name' => 'alfa'
alpha_num
- valoarea trebuie să conțină numai caractere alfanumerice 'username' => 'alpha_num'
alpha_dash
- valoarea trebuie să fie formată numai din cifre alfanumerice, liniuțe și / sau sublinieri 'user_name' => 'alpha_dash'
mărimea
- valoarea ar trebui să fie de o anumită lungime sau ar trebui să fie egală cu valoarea numerică 'api_key' => 'dimensiune: 10'
'order_count' => 'dimensiune: 10'
între
- valoarea este inclusă între un interval specificat 'order_count' => 'între: 1,100'
min
- valoarea este cel puțin dată 'order_count' => 'min: 1'
max
- valoarea este egală sau mai mică decât cea dată 'order_count' => 'max: 100'
numeric
- valoarea este numerică 'order_count' => 'numeric'
întreg
- valoarea este un număr întreg 'order_count' => 'integer'
în
- valoarea este cuprinsă în termenul dat 'tshirt_size' => 'în: xsmall, mic, mediu, mare, xlarge'
nu în
- valoarea nu este dată 'tshirt_size' => 'not_in: xsmall, xlarge'
confirmat
- va verifica dacă cheie_confirmare
există și este egală cu valoarea 'parola' => 'confirmat'
Aceasta va verifica dacă Confirmarea parolei
valoarea există și este egală cu parola
admis
- acest lucru va verifica dacă valoarea este setată la "da" sau 1. Utilă pentru casetele de selectare 'terms_of_service' => 'acceptat'
la fel
- valoarea este aceeași cu valoarea atributului dat 'parola' => 'același: confirm_password'
diferit
- valoarea trebuie să fie diferită de valoarea atributului dat 'parola' => 'diferit: old_password'
Meci
- valoarea trebuie să se potrivească cu expresia regulată dată 'user_name' => 'potrivire: / [a-zA-Z0-9] * /'
unic
- verifică unicitatea valorii din tabelul dat. 'user_name' => 'unic: utilizatori'
O coloană dată este de asemenea acceptată dacă numele coloanei nu este același cu numele atributului.
// dacă coloana din tabelul utilizatorilor este username, // putem furniza acest lucru în textul dat astfel: 'user_name' => 'unic: users, username'
Există momente când vrem să verificăm unicitatea, dar să ignorăm o anumită înregistrare (de obicei, înregistrarea asociată cu utilizatorul curent). Putem face acest lucru adăugând oa treia dată, care ar trebui să fie ID-ul acelei înregistrări în tabel.
// ID 10 este ID-ul înregistrării utilizatorului curent 'user_name' => 'unic: users, user_name, 10'
există
- valoarea ar trebui să existe într-un tabel 'category' => 'există: categorii'
Aceasta acceptă și o secundă dată dacă vrem să schimbăm numele coloanei pentru a verifica.
'category' => 'există: categorii, category_name'
inainte de
- valoarea ar trebui să fie o dată înainte de data dată 'publish_date' => 'înainte de: 2012-07-14'
după
- valoarea ar trebui să fie dată după data dată 'publish_date' => 'după: 2012-07-14'
e-mail
- valoarea ar trebui să fie într-un format de e-mail valid 'subscriber_email' => 'email'
URL-ul
- valoarea este într-un format url valid 'github_profile' => 'url'
active_url
- valoarea este într-un format valid url ȘI este activă 'github_profile' => 'active_url'
mimi
- verifică tipul de mime al unui fișier încărcat. Puteți utiliza orice valoare de tip mime din config / mimes.php fişier 'avatar' => 'mimes: jpg, gif, png, bmp'
imagine
- fișierul ar trebui să fie o imagine 'avatar' => 'imagine'
De asemenea, puteți utiliza funcția max
validator aici pentru a verifica dimensiunea unui fișier în kilobyte
'avatar' => 'imagine | max: 100'
Odată ce apelați Validator-> eșuează ()
sau Validator-> trece ()
metodă, biblioteca colectează toate erorile dintr-o clasă accesibilă prin intermediul acesteia Validator-> erori
. Veți putea apoi să recuperați aceste erori cu unele funcții din erori
clasă. Laravel oferă câteva funcții interesante pentru automatizarea procesării erorilor care se potrivește în majoritatea scenariilor POST / REDIRECT / GET:
clasa Register_Controller extinde Base_Controller public $ restful = true; funcția publică get_index () retur View :: make ('register.index'); funcția publică post_index () $ rules = array ('email' => 'obligatoriu | email | unic: utilizatori', 'parola' => 'confirmat'); Validarea $ = Validator :: make (Input :: get (), $ rules); dacă ($ validation-> fails ()) // Trimite obiectul validare $ la redirecționarea paginii Redirect :: to ('register') -> with_errors ($ validation);
Aici, folosim with_errors
metoda pentru Redirecţiona
bibliotecă. Aceasta leagă automat erori de $
variabil în vedere pentru oriunde suntem redirecționați - în acest caz, înregistrați / index
pagină:
În fișierul de vizualizare, folosim $ Errors-> are ()
pentru a verifica dacă există o eroare pentru câmpul specific. În caz contrar, vom folosi $ Errors-> get ()
pentru a afișa mesajele de eroare. Al doilea parametru din această metodă poate fi folosit pentru a furniza un șablon cu privire la modul în care afișăm mesajul de eroare.
Deoarece majoritatea oamenilor ar dori să schimbe mesajele de eroare pentru Laravel pentru a se potrivi cu branding-ul sau limbajul aplicației, biblioteca de validare permite, de asemenea, personalizarea mesajelor de eroare generate prin simpla adăugare într-o mesaje $
array la Validați :: face
funcția de apel:
$ rules = array ('email' => 'obligatoriu | email | unic: utilizatori', 'parola' => 'confirmat'); $ email = email "=" Adresa de e-mail pe care ați furnizat-o deja utilizată "," email_required "=> password_confirmed '=>' Confirmarea parolei nu a corespuns parolei dvs. '); validarea $ = Validator :: make (Input :: get (), $ rules, $ messages);
Există două moduri de a crea o mesaje $
matrice:
$ message = array ('required' => 'Câmpul atributului este obligatoriu', 'same' => size ',' between '=>' Atributul:: trebuie să fie între: min -: max. ',' in '=>' Atributul trebuie să fie unul dintre următoarele tipuri:: values ';
Aceasta va schimba mesajele de eroare implicite pentru toate câmpurile care au necesar, aceeași dimensiune, între și în
reguli. Aici, vedem, de asemenea, că Laravel folosește înlocuitori pentru a înlocui anumite valori în mesajul de eroare. :atribut
se va schimba în atributul de câmp (sans underderscores) este pentru. :alte
este folosit pentru la fel
, care se referă la celălalt atribut care ar trebui să se potrivească. :mărimea
se referă la dimensiunea definită în parametrii regulii. : min
și : max
este valoarea minimă și maximă și : valori
este lista de valori pe care am specificat că valoarea câmpului trebuie să fie.
$ email = email "=" Adresa de e-mail pe care ați furnizat-o deja utilizată "," email_required "=> password_confirmed '=>' Confirmarea parolei nu a corespuns parolei dvs. ');
email_required
este mesajul de eroare folosit atunci când e-mail
atributul nu reușește necesar
regulă, email_email
este mesajul de eroare folosit atunci când e-mail
eșuează e-mail
regulă și așa mai departe.
Dacă vă aflați în mod conștient să creați aceleași mesaje personalizate, ar fi mai ușor să specificați mesajele de eroare personalizate la nivel global. Puteți face acest lucru prin editarea application / langauge / ro / validation.php fișier și editarea personalizat
array găsit acolo:
... 'custom_name' => array ('email_required' => 'Vă rugăm să furnizați o adresă de e-mail', 'email_email' => 'Introduceți o adresă de email validă', 'email_unique' => ',' password_confirmed '=>' Confirmarea parolei nu corespundea parolei dvs. '); ...
lui Laravel Fișiere biblioteca ușurează gestionarea încărcărilor de fișiere utilizând Intrare :: încărcare
metodă, care este un simplu înveliș pentru PHP move_uploaded_file
funcţie:
Input :: upload ('input_name', 'director / to / save / file', 'filename.extension');
Pentru a valida încărcările de fișiere, puteți utiliza funcția validator
biblioteca pe care am discutat-o mai sus așa:
$ input = array ('upload' => Intrare :: fișier ('upload')); $ rules = array ('upload' => 'mimes: zip, rar | max: 500'); $ validator = Validator :: face ($ input, $ rules);
Fișiere biblioteca are și unele metode de manipulare a fișierelor, cum ar fi:
// Obțineți un fișier $ data = Fișier :: get ('path / file.extension'); // Scrie un fișier Fișier :: pune ('path / file.extension', $ data); // Adăugarea la un fișier File :: append ('path / file.extension', $ data);
Laravel furnizează, de asemenea, câteva funcții generale legate de fișiere care pot fi utilizate în întregul cod. De exemplu, Fișier :: extensie
returnă extensia unui nume de fișier șir:
// Aceasta va returna fisierul 'zip' :: extension ('data.zip');
Fișier :: este
Funcția verifică dacă un fișier este de un anumit tip. Luați notă că acest lucru nu verifică pur și simplu extensia fișierului, dar utilizează Informații despre fișier
Extensie PHP pentru a citi conținutul real al fișierului. Acest lucru este util pentru a determina dacă un fișier are de fapt un tip de fișier corect:
// Returnează adevărat dacă fișierul este un fișier zip, false dacă altfel File :: is ('zip', 'path / file.zip');
O listă de extensii compatibile poate fi văzută în application / config / mimes.php.
Vorbind despre tipurile de mime, puteți folosi și Fișier :: mime
pentru a obține tipurile de mime ale unei extensii. Tipul mime returnat se bazează pe același mimes.php fişier:
// Aceasta va întoarce imaginea / png Fișier :: mime ('png')
Fișier :: cpdir
si Fișier :: rmdir
metodele pot copia și șterge un director, respectiv.
Fișier :: cpdir ('director / to / copy', 'destination / directory'); // File :: rmdir este o ștergere recursivă, deci va șterge toate fișierele și folderele din interiorul directorului. Fișier :: rmdir ( 'directorul / a / șterge');
Acum că am învățat totul Filtre, Validare biblioteca și Fișiere bibliotecă, să le punem în aplicare în cererea noastră, Instapics.
AUTH
FiltruBase_Controller
Să începem prin a ne asigura că utilizatorii pot vizualiza numai pagini autentificate prin crearea unui AUTH
filtru care rulează înainte de toate solicitările. Din moment ce folosim rutarea bazată pe controler, va trebui să ne configurem filtrele în regulatorul nostru. Să punem filtrele în __construi
metodă a Base_Controller
pentru a vă asigura că AUTH
filtrul rulează pe toate controalele care o extind. În timp ce suntem la el, să adăugăm o nonauth
și filtru pentru a vă asigura că persoanele pot vizita anumite pagini numai atunci când nu sunt autentificate:
clasa Base_Controller extinde Controller funcția publică __construct () // Assets Asset :: add ('jquery', 'js / jquery-1.7.2.min.js'); Asset :: adăugați ('bootstrap-js', 'js / bootstrap.min.js'); Asset :: adăugați ('bootstrap-css', 'css / bootstrap.min.css'); Asset :: adăugați ('bootstrap-css-responsive', 'css / bootstrap-responsive.min.css', 'bootstrap-css'); Asset :: adăugați ('style', 'css / style.css'); părinte :: __ construct (); // Filtre $ class = get_called_class (); comutator ($ class) caz 'Home_Controller': $ this-> filter ('înainte', 'nonauth'); pauză; cazul "User_Controller": $ this-> filter ('înainte', 'nonauth') -> numai (array ('authenticate')); $ this-> filter ('înainte', 'auth') -> numai (array ('logout')); pauză; implicit: $ this-> filter ('înainte', 'auth'); pauză;
Aici definim că orice solicitare către Acasă
traseul va necesita un utilizator neautorizat, ceea ce este bun, deoarece acesta este locul unde se află ecranul de conectare. Orice altă cerere va implicit implicit să solicite un utilizator autentificat. Pentru User_Controller
, avem de fapt două metode separate care necesită atât utilizatori neautorizați (autentificați), cât și utilizatori autentificați (logout), deci facem uz de numai
pentru a specifica acțiunile controlerului la care se aplică filtrele.
routes.php
Acum deschis application / routes.php, care este locul unde vom defini AUTH
și nonauth
Filtre. Luați notă că este posibil să aveți deja deja existente AUTH
definiție filtru, astfel încât să o înlocuiți cu cea de mai jos:
Route :: filtru ('auth', function () if (Auth :: guest ()) returneaza Redirect :: to ('home');); Route :: filtru ('nonauth', function () if (Auth :: guest () == false) returneaza Redirect :: to ('dashboard););
În AUTH
filtru, verificăm dacă un utilizator este autentificat cu Auth
bibliotecă. Dacă utilizatorul nu este autentificat, îi redirecționăm înapoi la Acasă
traseu în cazul în care ecranul de conectare este, în caz contrar, li se permite să continue. Același lucru cu nonauth
filtru - verificați dacă utilizatorul este autentificat, dacă acesta este, apoi îl redirecționați spre tabloul de bord.
Acum, când știm mai multe despre cum să gestionăm încărcările de fișiere în Laravel, să începem să implementăm una dintre ele Instapics"principalele caracteristici - încărcarea fotografiilor. Începeți prin crearea unui dosar numit aplicație / vizualizări / plugins , iar în interiorul acestuia se creează un fișier de vizualizare Blade numit upload_modal.blade.php. Inserați următoarele coduri HTML:
Încărcați un nou Instapic
Anulare
Să declanșăm această formă modală cu un buton - adăugați acest lucru cerere / opinii / machete / main.blade.php, după .nav-colaps
div:
@ secțiune ('post_navigation') @if (Auth :: check ()) @ include ('plugins.loggedin_postnav') @endif @yield_section@section ( 'navigație')
- Acasă
@yield_section
Aici vom include un fișier de vizualizare numit loggedin_postnav
dacă utilizatorul este conectat. Aici vom adăuga butonul pentru formularul de încărcare modală. În același fișier, adăugați acest după .recipient
div:
@yield ( 'conținut')@ secțiune ('modals') @if (Auth :: check ()) @ include ('plugins.upload_modal') @endif @yield_section
Aici includem upload_modal
HTML. Ne asigurăm însă că utilizatorul nu este conectat înainte de a include acest fișier HTML, deoarece, ca și declanșatorul butonului, acest lucru nu ar fi cu adevărat necesar în cazul în care utilizatorul nu este autentificat.
Acum, creați cerere / vizualizari / plugins / loggedin_postnav.blade.php
Actualizați pagina și ar trebui să vedeți noul buton de încărcare - faceți clic pe acesta pentru a vedea că funcționează!
Acum, când avem chestii de lucru din față, să începem să lucrăm la partea din spate a formularului. Crea application / controllere / photo.php, și puneți următorul cod pentru controler:
clasa Photo_Controller extinde Base_Controller funcția publică action_upload () $ input = Input :: all (); $ extension = fișier :: extensie ($ input ['photo'] ['name']); $ director = cale ('public'). 'uploads /'. sha1 (Auth :: user () -> id); $ filename = sha1 (Auth :: user () -> id.time ()) ". $ extensie"; $ upload_success = Input :: upload ('foto', $ director, $ filename); dacă ($ upload_success) Session :: flash ('status_success', 'Încărcat cu succes noul Instapic'); altceva Session :: flash ('status_error', 'A apărut o eroare în timpul încărcării noului Instapic - încercați din nou.'); if ($ upload_success) $ photo = noua fotografie (array ('location' => URL :: to ('uploads / , 'descriere' => $ input ['description'])); Auth :: utilizator () -> (fotografii) -> introduceți ($ foto); returnează Redirecționarea :: către ("tabloul de bord");
Încercați - ar trebui să puteți începe să încărcați un nou Instapics.
Să adăugăm câteva reguli de validare pentru acest lucru pentru a vă asigura că utilizatorul trimite numai lucrurile corecte. Actualizați controlerul cu următoarele:
clasa Photo_Controller extinde Base_Controller funcția publică action_upload () $ input = Input :: all (); dacă isset ($ input ['description'])) $ input ['descriere'] = filter_var ($ input ['description'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); $ rules = array ('photo' => 'cerută | imagine | max: 500', // încărcarea fotografiei trebuie să fie o imagine și nu trebuie să depășească 500kb 'description' => 'required' // este necesară descrierea); validarea $ = Validator :: make ($ input, $ rules); dacă ($ validarea-> nu reușește ()) returnează Redirecționarea :: la ('dashboard') -> with_errors ($ validation); $ extension = fișier :: extensie ($ input ['photo'] ['name']); $ director = cale ('public'). 'uploads /'. sha1 (Auth :: user () -> id); $ filename = sha1 (Auth :: user () -> id.time ()) ". $ extensie"; $ upload_success = Input :: upload ('foto', $ director, $ filename); dacă ($ upload_success) $ photo = new Photo (array ('location' => URL :: to ('uploads / 'descriere' => $ input ['description'])); Auth :: utilizator () -> (fotografii) -> introduceți ($ foto); Session :: flash ('status_success', 'S-a încărcat cu succes noul dvs. Instapic'); altceva Session :: flash ('status_error', 'A apărut o eroare în timpul încărcării noului dvs. Instapic - încercați din nou.'); returnează Redirecționarea :: către ("tabloul de bord");
Vedeți cum validăm intrarea? Ne asigurăm că fotografia este prezentă, o imagine și mai puțin de 500kb. De asemenea, ne asigurăm că descrierea este prezentă după salubrizare. Încă nu vom putea vedea mesajele noastre de eroare, așa că haideți să le rezolvăm prin adăugarea unor coduri HTML pentru a reda mesajele noastre de eroare. Deschis cerere / opinii / machete / main.blade.php și adăugați următoarele în interiorul .recipient
div:
@ include ('plugins.status') @yield ('content')
Acum, creați cerere / vizualizari / plugins / status.blade.php. Aici vom reda mesajele de eroare reale. De asemenea, vom adăuga suport pentru mesajele de stare bazate pe sesiuni (cum ar fi cele pe care le folosim în interiorul $ upload_success
verificați Fotografii
codul de comandă):
@if (isset ($ erori) && count ($ erori-> all ())> 0)×@elseif (! is_null (Session :: get ('status_error'))Oh Snap!
@foreach ($ errors-> all ('
- :mesaj
') ca mesaj $) $ message @endforeach×@endif @if (! is_null (Session :: get ('status_success')))Oh Snap!
@if (is_array (Session :: get ('status_error')))@foreach (Session :: get ('status_error') ca eroare $)
@else Session :: get ('status_error') @endif- $ error
@endforeach×@endifSucces!
@if (is_array (Session :: get ('status_success')))@foreach (Session :: get ('status_success') ca succes de $)
@else Session :: get ('status_success') @endif- $ success
@endforeach
Încercați să provocați erori în formularul de încărcare prin trimiterea fără nici un fișier selectat sau fără descriere (deoarece ambele sunt necesare). Ar trebui să vedeți mesajele de eroare redate în partea de sus:
Acum că știm cum să folosim Laravel Validare bibliotecă, să revizuim prima noastră formă - formularul de înregistrare și de înregistrare. În momentul de față, folosim doar unul ecou
pentru a vedea că datele de conectare sau de înregistrare au eșuat - să le înlocuim cu o validare corectă. Deschis application / controllere / user.php și actualizați-l astfel:
class User_Controller extinde Base_Controller funcția publică action_authenticate () $ email = Input :: get ('email'); $ password = Intrare :: get ('parola'); $ new_user = Intrare :: get ('new_user', 'off'); $ input = array ('email' => $ email, 'parola' => parola $); dacă $ new_user == 'on') $ rules = array ('email' => 'obligatoriu | email | unic: utilizatori', 'parola' => 'cerut'); validarea $ = Validator :: make ($ input, $ rules); dacă ($ validation-> fails ()) returnează Redirecționarea :: la ('home') -> with_errors ($ validation); încercați $ user = new User (); $ user-> email = $ email; $ user-> parola = Hash :: make ($ password); $ User-> Salvare (); Auth :: autentificare (utilizator $); returnează Redirect :: către ('tabloul de bord'); captură (Excepție $ e) Session :: flash ('status_error', 'A apărut o eroare la crearea unui nou cont - încercați din nou.'); întoarcere Redirecționare :: la ("acasă"); altfel $ rules = array ('email' => 'obligatoriu' e-mail | există: utilizatori ',' parola '=>' cerut '); validarea $ = Validator :: make ($ input, $ rules); dacă ($ validation-> fails ()) returnează Redirecționarea :: la ('home') -> with_errors ($ validation); $ credentials = array ('username' => $ email, 'parola' => parola $); dacă (Auth :: tentativă ($ credentials)) returnează Redirect :: la ('tabloul de bord'); altceva Session :: flash ('status_error', 'E-mailul sau parola dvs. sunt nevalide - încercați din nou.'); întoarcere Redirecționare :: la ("acasă"); funcția publică action_logout () Auth :: logout (); Redirecționează :: pentru ( 'home / index');
Din moment ce am făcut modularea modului nostru de redactare a mesajelor de stare, nu este nevoie nici măcar să scriem alte coduri HTML pentru a vedea mesajele de eroare în acțiune! Doar încercați!
În cel de-al treilea tutorial al nostru Laravel serie, am aflat:
Laravel vine cu multe dintre aceste mici funcții și biblioteci, care, deși implementabil în alte moduri, este simplificat și simplificat (de exemplu, încărcări de fișiere într-o singură linie!) Prin adoptar