Kontynuujemy poznawanie Laravela. Pochylamy się nad zagadnieniem plików cookies w Laravelu. Do dzieła.
Ok, pierwszy route, jaki dodamy do naszego web.php:
Route::get('/get-cookie', function () {
$userName = request()->cookie('user_name');
return "User Name: $userName";
});
Swoją drogą ja wolę zawsze Request wstrzykiwać:
Route::get('/get-cookie', function (Request $request) {
$userName = $request->cookie('user_name');
return "User Name: $userName";
});
Ok, teraz set-cookie:
Route::get('/set-cookie', function () {
$cookie = cookie('user_name', 'John Doe', 60); // Name, Value, Minutes
return response('Cookie has been set')->cookie($cookie);
});
Teraz forget cookie:
Route::get('/forget-cookie', function () {
$cookie = cookie('user_name', 'John Doe', -1);
return redirect()->back()->withCookie($cookie);;
});
Nie wystarczy ustawić minusowy czas. Aby się zapisało musimy to cookie zapisać do zmiennej i w jakiś sposób odesłać, np. z withCookie. Dopiero wtedy się zapisuje.
Czyli albo jakiś redirect z ->withCookie, albo response z ->cookie:
return response('Hello World')->cookie($cookie);
Dopiero po odesłaniu response/redirecta to się zapisuje, inaczej jest tylko w pamięci.
Ok, set-cookie-redirect:
Route::get('/set-cookie-redirect', function () {
$cookie = cookie('user_name', 'John Doe', 60); // Name, Value, Minutes
return redirect("/get-cookie")->withCookie($cookie);
});
Tutaj też to cookie tworzy w pamięci ten plik, żeby się zapisał musimy go dołączyć do redirecta, cookie to nie odpowiednik setcookie z czystego PHP, ale warstwa abstrakcji, która musi być dopisana do response/redirect aby zaobserwować efekt.
Ok, jak sprawdzić, czy cookie istnieje? Łatwo:
Route::get('/get-cookie', function (Request $request) {
if($request->hasCookie('user_name')){
$userName = $request->cookie('user_name');
return "User Name: $userName";
} else {
return "Hello stranger!";
}
});
I to by było na tyle, jeśli chodzi o pliki cookies w Laravelu.