Метод getSession
Метод getSession класса Request
возвращает объект сессии для текущего
запроса. Сессия позволяет сохранять данные
между запросами одного пользователя. Если
сессия ещё не была запущена, метод
автоматически её инициализирует. Метод не
принимает параметров и возвращает экземпляр
SessionInterface.
Синтаксис
public function getSession(): SessionInterface
Пример
Давайте получим сессию и запишем в неё
значение по ключу 'user':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$session = $request->getSession();
$session->set('user', 'abcde');
return new Response('session set');
}
}
?>
Результат выполнения кода:
"session set"
Пример
Давайте прочитаем значение из сессии по
ключу 'user':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$session = $request->getSession();
$user = $session->get('user', 'guest');
return new Response($user);
}
}
?>
Результат выполнения кода, если значение было сохранено ранее:
abcde
Пример
Давайте поработаем с массивом в сессии - добавим новый элемент в список:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$session = $request->getSession();
$items = $session->get('items', ['a', 'b', 'c']);
$items[] = 'd';
$session->set('items', $items);
return new Response(implode(', ', $items));
}
}
?>
Результат выполнения кода:
"a, b, c, d"
Смотрите также
-
класс
Request,
который представляет HTTP-запрос -
метод
hasSession,
который проверяет наличие сессии -
метод
get,
который возвращает параметр запроса -
метод
getClientIp,
который возвращает IP-адрес клиента