Для чего нужен Request Symfony

Фреймворк Symfony работает на основе http запросов (Request) и ответов (Response). Объект Request в Symfony представляет текущий HTTP-запрос, отправленный клиентом к вашему приложению.

Подробнее о том, как это происходит можно посмотреть в серии видео здесь:
https://webkyrs.info/razdel/symfony

Часто нужно получить текущий запрос к странице и каким-то образом его видоизменить. 

Например, мы можем:

+ получить переданные данные (GET, POST) из этого запроса

+ информацию о маршруте:

$request->get('_route') - получить имя текущего маршрута

$request->get('_controller') - получить имя текущего контроллера

$request->get('_route_params') - получить параметры текущего маршрута

+ информацию о запросе:

$request->getMethod() - получить HTTP-метод запроса (GET, POST, PUT и т.д.)

$request->getUri() - получить URI текущего запроса

$request->getScheme() - получить схему текущего запроса (http или https)

$request->getHost() - получить хост текущего запроса

$request->getClientIp() - получить IP-адрес клиента

+ Параметры запроса:

$request->query->get('name') - получить значение параметра запроса по его имени (GET-параметры)

$request->request->get('name') - получить значение параметра запроса по его имени (POST-параметры)

$request->attributes->get('name') - получить значение атрибута запроса по его имени

+ Файлы:

$request->files->get('name') - получить файл по имени

+ Cookies:

$request->cookies->get('name') - получить значение cookie по его имени

+ Информация о браузере и устройстве:

$request->headers->get('User-Agent') - получить значение заголовка User-Agent

+ Информация о сессии:

$request->getSession() - получить объект текущей сессии

+ Другие методы

Получение request в контроллере

В зависимости от того места, где необходимо получить текущий запрос, мы можем получить его по разному. Например, внутри контроллера это можно сделать следующим образом:

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;

class ExampleController extends AbstractController
{
    public function exampleAction(Request $request)
    {
        // использовать объект Request
        $name = $request->query->get('name');
        $method = $request->getMethod();
        // и т.д.
    }
}

Получение request в сервисе

Внутри сервиса текущий запрос можно получить с помощью объекта RequestStack. Вот пример, как это может выглядеть.

use Symfony\Component\HttpFoundation\RequestStack;

// Внедрите сервис `request_stack` в ваш контроллер или сервис
public function exampleAction(RequestStack $requestStack)
{
    // Получить текущий объект Request
    $request = $requestStack->getCurrentRequest();
    // использовать объект Request
    $name = $request->query->get('name');
    $method = $request->getMethod();
    // и т.д.
}

Вот, собственно, и все. Больше информации по работе с Symfony и запросами в видеоформате можно посмотреть здесь