Как получить тип запроса (master / sub) в контроллере Symfony2? - PullRequest
12 голосов
/ 17 июля 2011

Возможен ли тип запроса get в контроллере? Как?

Ответы [ 3 ]

14 голосов
/ 14 февраля 2015

Чтобы определить, является ли запрос ведущим или нет, требуется использовать RequestStack, который должен быть введен в ваш контроллер. В стеке запросов есть 3 полезных метода

getCurrentRequest();
getMasterRequest();
getParentRequest();

getParentRequest() всегда будет возвращать ноль, если текущий запрос является главным.

2 голосов
/ 29 октября 2013

Я искал это сам, и кажется, что это просто обошлось, так что, похоже, нет ни одного места, которое знает, что это такое.

Моя мысль для решения этой проблемы будетсоздайте простой слушатель kernel.request, который просто добавляет атрибут к запросу.Примерный (не проверенный) код ниже:

public function onKernelRequest(GetResponseEvent $event)
{
    $event->getRequest()->attributes->set('_request_type', $event->getRequestType());
}

Тогда в контроллере вы сможете сделать:

$requestType = $this->getRequest()->attributes->get('_request_type');

Опять же, это не проверено.Вам нужно было бы написать полный класс слушателя и добавить его в файл конфигурации служб, но я думаю, что кроме этого это будет работать.

0 голосов
/ 17 июля 2011

Легко, просто вызовите метод getMethod() для вашего Request объекта:

$method = $this->get('request')->getMethod();

Это вернет метод HTTP текущего запроса, например, GET, POST, PUT или DELETE.

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