Как извлечь запрос из сервис-контейнера

Дата обновления перевода 2023-07-14

Как извлечь запрос из сервис-контейнера

Если вам необходимо получить доступ к текущему запросу в сервисе, можно либо добавить его в качестве аргумента в методы, которым нужен запрос, либо внедрить сервис request_stack и получить доступ к Request, вызвав метод getCurrentRequest():

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// src/Newsletter/NewsletterManager.php
namespace App\Newsletter;

use Symfony\Component\HttpFoundation\RequestStack;

class NewsletterManager
{
    protected $requestStack;

    public function __construct(RequestStack $requestStack)
    {
        $this->requestStack = $requestStack;
    }

    public function anyMethod()
    {
        $request = $this->requestStack->getCurrentRequest();
        // ... сделать что-то с запросом
    }

    // ...
}

Теперь, просто внедрите request_stack, который ведёт себя, как любой нормальный сервис. Если вы используете конфигурацию services.yml по умолчанию , это случится автоматически благодаря автомонтажу.

Tip

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