Метод forget
Метод forget класса Session удаляет указанные ключи
и их значения из текущей сессии. В качестве первого параметра
передаётся название ключа (строка) или массив ключей, которые
следует удалить. Метод не возвращает значение и работает
непосредственно с хранилищем сессии.
Синтаксис
<?php
session()->forget($keys);
?>
Пример
Давайте добавим данные в сессию, а затем удалим ключ 'user':
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function store(Request $request)
{
session()->put('user', 'John Doe');
session()->put('role', 'admin');
$user = session()->get('user');
echo $user;
session()->forget('user');
$res = session()->has('user');
echo $res ? 'true' : 'false';
}
}
?>
Результат выполнения кода:
"John Doe"
"false"
Пример
Удалим несколько ключей одновременно, передав массив:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SettingsController extends Controller
{
public function clear(Request $request)
{
session()->put('theme', 'dark');
session()->put('language', 'ru');
session()->put('notifications', 'on');
$all = session()->all();
echo json_encode($all);
session()->forget(['language', 'notifications']);
$res = session()->all();
echo json_encode($res);
}
}
?>
Результат выполнения кода:
{"theme":"dark","language":"ru","notifications":"on"}
{"theme":"dark"}
Пример
Если указать несуществующий ключ, метод не вызовет ошибку:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
public function index(Request $request)
{
session()->put('name', 'John');
session()->forget('non_existent_key');
$res = session()->get('name');
echo $res;
}
}
?>
Результат выполнения кода:
"John"
Пример
Метод forget работает с вложенными ключами через точку:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
public function update(Request $request)
{
session()->put('user.profile.name', 'John');
session()->put('user.profile.email', 'john@example.com');
session()->put('user.settings.theme', 'light');
$res = session()->all();
echo json_encode($res);
session()->forget('user.profile.email');
$res = session()->all();
echo json_encode($res);
}
}
?>
Результат выполнения кода:
{"user":{"profile":{"name":"John","email":"john@example.com"},"settings":{"theme":"light"}}}
{"user":{"profile":{"name":"John"},"settings":{"theme":"light"}}}