Для получения значения cookie используется cookie() класса request. Приведём пример эквивалентной записи:
<?php
$value = $request->cookie('name');
$value = Request::cookie('name');
?>
С помощью метода cookie() можно прикреплять куки к экземпляру Illuminate\Http\Response
. В этот метод необходимо передавать ключ, значение и количество минут, в течение которых кука считается действительной:
<?php
return response('Hello, MouseDC!')->cookie(
'key', // ключ
'value', // значение
$minutes, // количество минут действия куки
$path, // путь внутри сайта. Если "/", то относится ко всему сайту
$domain, // домен для установки куки (можно задать для поддомена)
$secure, // true/false - данные доступны только через HTTPS
$httpOnly // true/false - данные доступны только через HTTP протокол
);
?>
Если нужно использовать экземпляр cookie позднее в коде, то можно использовать одноимённую вспомогательную пункцию cookie(). Её значение не будет отправлено клиенту до тех пор, пока не будет вызван через метод cookie() класса request. То есть в таком случае надо делать так:
<?php
$cookie = cookie('key', 'value', $minutes);
return response('Hello, MouseDC!')->cookie($cookie);
?>
Сама глобальная функция cookie() возвращает экземпляр Symfony\Component\HttpFoundation\Cookie
. Её так же можно прикреплять к Illuminate\Http\Response
с помощью метода withCookie():
<?php
$response = new Illuminate\Http\Response('Hello, MouseDC!');
$response->withCookie('key', 'value', $minutes);
return $response;
?>
Для создания cookie с максимальным временем жизни в 5 лет используйте метод forever(). Для этого сначала вызовите метод "cookie", а потом передайте данные в его в "forever":
<?php
$response->withCookie(cookie()->forever('key', 'value'));
?>
Если на сайте идёт активная работа с cookie, то может получиться так, что добавить значение cookie в очередь ещё до того, как ответ был создан. В этом может помочь метод queue(). Делается это так:
<?php
namespace App\Http\Controllers;
use Cookie;
use Illuminate\Routing\Controller;
class UserController extends Controller {
public function update() {
Cookie::queue('key', 'value');
return response('Hello, MouseDC!');
}
}
?>