Как получить доступ к файлам cookie или запросить услугу?Symfony - PullRequest
1 голос
/ 16 февраля 2012

У меня есть служба, которая требует получить некоторую информацию из запроса.

Я не хочу постоянно передавать эти значения службе, поэтому возможно ли, чтобы служба сама получала некоторую информацию о запросе и особенно о файлах cookie?

class SomeService {
    public function someMethod() {
        // access request and cookies, whithout passing in those values
    }
}

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

затем введите сервис request.

У вас наверняка есть определение сервиса, измените его следующим образом:

<service id="my_service" class="SomeService" scope="request">
    <argument type="service" id="request" />
</service>

Затем в своем классе создайте метод __construct, который получит объект запроса:

class SomeService 
{
    private $request;

    public function __construct(Request $request) {
        $this->request = $request;
    }

    public function someMethod() {
        $this->request->getSession();
    }
}
1 голос
/ 25 марта 2014

В качестве альтернативы, начиная с Symfony 2.4, вы можете легко добавить новую службу @request_stack.

Из документов :

Если вы пытаетесь внедрить службу запроса, простое решение вместо этого ввести сервис request_stack и получить доступ к текущему Запрос, вызвав метод getCurrentRequest() ( см. Инъекция Запрос ) ...

Это должно охватывать большинство случаев.

@request_stack эмулирует @request службу, которая работает как любая другая служба в приложении.

@request - это специальная служба, поскольку может потребоваться ее создание несколько раз (обычно в подзапросах).

Подробнее об этом: Почему бы не ввести запрос в сервис?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...