-
Retrieving Cookie from Request
-
Redirect with Cookie
-
Deleting Cookie
Cookie generated by the Laravel framework are encrypted and signed and it can`t be modified or read by the client.
Creating Cookie
You can create a cookie by attaching the
global cookie() helper to a
response():
return response('Hello Me.')->cookie('name', 'value', $minutes);
If you want to create the cookie when a view is returned, use the following syntax:
return response()->view('file_name')->cookie('name', 'value', $minutes);
The
cookie() method will take 3 arguments. First argument is
the name of the cookie, second argument is
the value of the cookie, and the third argument is the
duration in minutes after which the cookie will get deleted automatically.
Retrieving Cookie from Request
To
retrieve a cookie value from the request, use the
cookie() method on a
Illuminate\Http\Request instance:
$value = $request->cookie('name');
Redirect with Cookie
To make a redirect with cookie, apply the
withCookie() method:
return redirect('/')->withCookie(cookie('cookie_name', 'value', $minutes));
Deleting Cookie
To delete a cookie, just create that cookie with a negative value in the third argument, $minutes:
return response()->view('file_name')->cookie('name', '', -1);
Practical example
1. We create a controller called
CookieController.
Copy the following code and save it 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. Now, set up the routes to test the CookieController.
Add the following code in the
routes/web.php file:
Route::get('cookie/get','CookieController@getCookie');
Route::get('cookie/set','CookieController@setCookie');
Route::get('cookie/delete','CookieController@deleteCookie');
3. Visit the following URL to
create the cookie:
//localhost:8000/cookie/set
- Output:
Hello Me.
4. Visit the following URL to
get the cookie`s value:
//localhost:8000/cookie/get
- Output:
Cookie "name" = cookie-value
5. Visit the following URL to
delete the cookie:
//localhost:8000/cookie/delete
- Output:
Cookie deleted
6. Now, if you visit again the URL:
//localhost:8000/:/get , it will display:
No cookie "name"