РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
192 of 1361 menu

Метод hasSession

Метод hasSession класса Request возвращает true, если для текущего запроса была установлена сессия, и false в противном случае. Метод не принимает параметров. Сессия считается установленной, если ранее был вызван метод setSession или сессия была инициализирована фреймворком автоматически через сервис SessionInterface.

Синтаксис

$res = $request->hasSession();

Пример

Давайте проверим, установлена ли сессия для запроса, полученного из стека запросов:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(RequestStack $requestStack): Response { $request = $requestStack->getCurrentRequest(); if ($request->hasSession()) { return new Response('session exists'); } return new Response('no session'); } } ?>

Результат выполнения кода:

"session exists"

Пример

Давайте получим сессию только после проверки её наличия через hasSession, чтобы избежать ошибки:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/count', name: 'article_count')] public function count(RequestStack $requestStack): Response { $request = $requestStack->getCurrentRequest(); if (!$request->hasSession()) { return new Response('session is not available'); } $session = $request->getSession(); $session->set('counter', 1); return new Response('counter: ' . $session->get('counter')); } } ?>

Результат выполнения кода:

"counter: 1"

Пример

Давайте создадим запрос вручную и убедимся, что без вызова setSession метод hasSession вернёт false:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/manual', name: 'article_manual')] public function manual(): Response { $request = new Request(); $before = $request->hasSession(); $request->setSession(new Session()); $after = $request->hasSession(); return new Response( 'before: ' . var_export($before, true) . ', ' . 'after: ' . var_export($after, true) ); } } ?>

Результат выполнения кода:

"before: false, after: true"

Смотрите также

  • метод getSession,
    который возвращает объект сессии
  • класс Request,
    который представляет HTTP-запрос
  • класс RequestStack,
    который хранит стек запросов
  • метод getCurrentRequest,
    который возвращает текущий запрос
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить