- Stefanescu Mihai a postat in Paginare in PHP
- johhny a postat in Paginare in PHP
- Stefanescu Mihai a postat in Cum pot afisa eroarea cand utilizatorul a scris un username gresit sau o parola gresita?
- madalin a postat in Cum pot afisa eroarea cand utilizatorul a scris un username gresit sau o parola gresita?
- Stefanescu Mihai a postat in Featureuri site
Despre middleware-uri in laravel
HTTP Middleware este un mecanism ce ne ajuta la filtrarea cererilor HTTP de a ajunge in aplicatia ta. In Laravel, de exemplu avem un middleware ce ne ajuta sa verificam daca un utlizator este autentificat.
La ce putem folosi Middleware
Iata unde va poate fi de folos un middleware.
- Daca lucrati la un api puteti face un middleware pentru a confirma API key-ul
- Putem schimba limba site-ului in functie de zona in care ne aflam
- Putem porni modul de maintanance
La sfarsitul acestui articol ve-ti avea idee cum puteti crea un middleware si cum il puteti folosi in proiectul vostru. Pentru a va ajuta sa inetlegeti un middleware am sa fac impreuna cu voi un middleware ce va afisa un mesaj de mentenanta pe tot site-ul sau numai pe anumite rute.
Crearea unui middleware
Cu ajutorul artisan putem face un middlware foarte simplu, tot ce trebuie sa facem este sa deschidem un terminal si sa scriuem urmatoarea comanda:
php artisan make:middleware [nume middleware]
Aceasta comanda va crea un fisier nou in app/Http/Middleware.
Iata comanda executata de mine:
php artisan make:middleware DownForMaintenance
Acum putem deschide fisierul middleware si putem adauga codul. Primul lucru pe care trebuie sa-l facem este sa importam HttpException astfel:
use Symfony\Component\HttpKernel\Exception\HttpException;
In metoda handle a middleware-ului putem adauga acest cod:
public function handle($request, Closure $next){ throw new HttpException(503); }
Aruncand aceasta exceptie laravel va afisa view-ul 503.blade.php care ar trebuii sa le afiseze un mesaj cum ca site-ul este in mentenanta.
Inregistrarea unui Middleware
Acum ca am creat un middleware trebuie sa anuntam si apicatia despre existenta acestuia. Daca doriti ca acest middleware sa poata fi folosit la fiecare request intrati in app/Http/kernel.php si adaugati urmatorul cod in array-ul $middleware:
'down.for.maintenance' => \App\Http\Middleware\DownForMaintenance::class,
Atasarea unu middleware unei rute
Stim deja cum arata o ruta:
Route::get('posts/{parametru}', 'PostController@getPost');
Metoda getPost din controller-ul PostController este rulata atunci cand este accesat link-ul posts/{parametru}
Putem adauga acest middleware rutei schimband ce-l de-al doilea parametru din string in array astfel:
Route::get('posts/{parametru}', ['middleware' => 'grown.ups.only', function () { return "NU! Nu vreau sa vezi aceasat pagina!";}]);
Acum daca cineva acceseaza ruta posts/{parametru} nu va mai ajunge in controller, ci va putea sa vada numai o pagina cu un mesaj.
Parametri in middleware
Pasarea de parametri unui middleware este destul de simpla. De exemplu, poate dorim sa verificam ce rol are utilizatorul care a accesat aceasta ruta, putem pasa atat un rol cat si o lista cu toate rolurile.
Pentru a pasa un parametru unui middleware,dupa $request si Closure adauga variabila ce dorim sa fie preluata ca parametru:
public function handle($request, Closure $next, $role){ if (! $request->user()->hasRole($role)) { // Redirect... } return $next($request); }
Pentru a pasa o variabila cand atasam un middleware unei rute facem astfel:
Route::put('post/{id}', ['middleware' => 'role:editor', function ($id) { //}]);
Concluzie
In acest articol am vorbit numai despre un mod in care poate fi folosit un middleware, de fapt le puteti folosi intr-o multume de moduri.
Pentru orice nelamurire puteti lasa un comentariu mai jos sau puteti posta pe forum aici: http://www.invata-programare.ro/forums/topic/despre_middleware_in_framework-ul_laravel
Comentarii