-
Preluare Cookie
-
Redirect cu Cookie
-
Stergere Cookie
Cookie-urile generate de framework-ul Laravel sunt criptate si semnate si nu poat fi modificate sau citite de client.
Creare Cookie
Cookie se poate crea prin atasarea functiei
cookie() la un
response():
return response('Hello Me.')->cookie('name', 'value', $minutes);
Daca vreti sa creati cookie-ul cand un view este returnat, folositi urmatoarea sintaxa:
return response()->view('file_name')->cookie('name', 'value', $minutes);
Metoda
cookie() preia 3 argumente. Primul argument este
numele cookie-ului, al doilea argument este
valoarea cookie-ului si al treilea argument este
durata in minute dupa care cookie-ul va fi sters automat.
Preluare Cookie
Pentru a
prelua valuarea dintr-un cookie, se foloseste metoda
cookie() la o instanta
Illuminate\Http\Request:
$value = $request->cookie('name');
Redirect cu Cookie
Pentru a face redirect cu cookie, aplicati metoda
withCookie():
return redirect('/')->withCookie(cookie('cookie_name', 'value', $minutes));
Stergere Cookie
Pentru a sterge un cookie, creati acel cookie cu o valoare negativa la al treilea argument, $minutes:
return response()->view('file_name')->cookie('name', '', -1);
Exemplu practic
1. Cream un controller, numit
CookieController.
Copiati urmatorul cod si salvati-l in "
app/Http/Controllers/CookieController.php".
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class CookieController extends Controller {
public function getCookie(Request $request){
$val = $request->cookie('name');
if($val) return 'Cookie "name" = '. $val;
else return 'No cookie "name"';
}
public function setCookie(Request $request){
return response('Hello Me.')->cookie('name', 'cookie-value', 60);
}
public function deleteCookie(Request $request){
return response('Cookie deleted')->cookie('name', '', -1);
}
}
2. Acum, definiti Route pentru a testa CookieController.
Adaugati urmatorul cod in fisierul
routes/web.php:
Route::get('cookie/get','CookieController@getCookie');
Route::get('cookie/set','CookieController@setCookie');
Route::get('cookie/delete','CookieController@deleteCookie');
3. Descfhideti urmatoarea adresa URL pentru
a crea cookie-ul:
//localhost:8000/cookie/set
- Output:
Hello Me.
4. Visitati urmatorul URL pentru
a obtine valoarea cookie-ului:
//localhost:8000/cookie/get
- Rezultat:
Cookie "name" = cookie-value
5. Vizitati urmatorul URL pentru
a sterge cookie-ul:
//localhost:8000/cookie/delete
- Rezultat:
Cookie deleted
6. Acum, daca vizitati din nou URL-ul:
//localhost:8000/:/get , va afisa:
No cookie "name"