Класс Cookie
Класс Cookie в Laravel используется для работы с куками - небольшими фрагментами данных, которые сервер отправляет браузеру и которые браузер возвращает при последующих запросах. Основные методы класса позволяют создавать куки с заданными параметрами (имя, значение, срок действия, путь, домен, защищённость и доступность для JavaScript), помещать их в очередь на отправку с ответом, извлекать значения кук из запроса и удалять их. В большинстве случаев работа с куками происходит через фасады Cookie или глобальные функции-помощники.
Класс Cookie находится в пространстве имён Illuminate\Support\Facades и предоставляет следующие основные методы: make - создание нового экземпляра куки, queue - добавление куки в очередь на отправку, get - получение значения куки из запроса, has - проверка наличия куки, forever - создание куки с бесконечным сроком действия, forget - удаление куки (установка срока действия в прошлое) и expire - алиас для forget.
Синтаксис
<?php
use Illuminate\Support\Facades\Cookie;
// Создание куки
Cookie::make($name, $value, $minutes, $path, $domain, $secure, $httpOnly);
// Добавление куки в очередь
Cookie::queue($name, $value, $minutes);
// Получение значения куки
Cookie::get($name, $default);
// Проверка наличия куки
Cookie::has($name);
// Удаление куки
Cookie::forget($name);
?>
Пример
Давайте создадим куку с именем 'user_id' и значением 123, сроком действия на 60 минут:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Http\Request;
class CookieController extends Controller
{
public function setCookie()
{
$cookie = Cookie::make('user_id', 123, 60);
return response('Cookie has been set.')->cookie($cookie);
}
}
?>
В этом примере мы создаём куку с помощью метода make, а затем присоединяем её к ответу с помощью метода cookie объекта ответа.
Пример
Давайте добавим куку в очередь на отправку с помощью метода queue:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Http\Request;
class CookieController extends Controller
{
public function queueCookie()
{
Cookie::queue('theme', 'dark', 120);
return response('Theme cookie has been queued.');
}
}
?>
Куки, добавленные в очередь, автоматически присоединяются к ответу в промежуточном слое AddQueuedCookiesToResponse.
Пример
Давайте получим значение куки из запроса с помощью метода get:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Http\Request;
class CookieController extends Request
{
public function getCookie()
{
$userId = Cookie::get('user_id', 'default');
echo $userId;
}
}
?>
Результат выполнения кода:
"123"
Пример
Давайте проверим наличие куки с помощью метода has:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Http\Request;
class CookieController extends Controller
{
public function checkCookie()
{
if (Cookie::has('user_id')) {
echo "Cookie exists";
} else {
echo "Cookie does not exist";
}
}
}
?>
Результат выполнения кода:
"Cookie exists"
Пример
Давайте удалим куку с помощью метода forget:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Http\Request;
class CookieController extends Controller
{
public function deleteCookie()
{
Cookie::queue(Cookie::forget('user_id'));
return response('Cookie has been deleted.');
}
}
?>
Метод forget создаёт куку с истекшим сроком действия, что заставляет браузер удалить её. Мы помещаем её в очередь для отправки с ответом.