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

Метод getMainRequest

Метод getMainRequest класса RequestStack возвращает главный запрос из стека запросов. Главным считается самый первый запрос, который был помещён в стек. Он остаётся неизменным на протяжении всего жизненного цикла приложения и не заменяется при обработке вложенных запросов, например при использовании forward или subrequest. Метод не принимает параметров и возвращает объект Request или null, если стек пуст.

Синтаксис

public function getMainRequest(): ?Request

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(RequestStack $requestStack): Response { $mainRequest = $requestStack->getMainRequest(); return new Response($mainRequest->getMethod()); } } ?>

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

"GET"

Пример

Давайте убедимся, что при вложенном запросе главный запрос не меняется. Сначала получим главный запрос, затем текущий:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/user', name: 'article_user')] public function user(RequestStack $requestStack): Response { $mainRequest = $requestStack->getMainRequest(); $currentRequest = $requestStack->getCurrentRequest(); $res = [ $mainRequest->getPathInfo(), $currentRequest->getPathInfo(), ]; return new Response(implode(', ', $res)); } } ?>

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

"/user, /user"

Поскольку вложенных запросов нет, главный и текущий запросы совпадают.

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

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