Возможно ли получить запрос типа запроса в контроллере? Как?
Как получить тип запроса (master/sub) в контроллере Symfony2?
Ответ 1
Чтобы определить, является ли запрос хозяином или нет, требуется использование RequestStack
, который должен быть введен в ваш контроллер. Стек запроса имеет 3 полезных метода.
getCurrentRequest();
getMasterRequest();
getParentRequest();
getParentRequest()
всегда будет возвращать значение null, если текущий запрос является основным.
Ответ 2
Я искал это сам, и кажется, что он просто прошел вокруг, так что, похоже, не одно место, которое знает, что это такое.
Моя мысль для решения этой проблемы заключалась бы в создании простого слушателя kernel.request, который просто добавляет атрибут запроса. Грубый (не проверенный) код ниже:
public function onKernelRequest(GetResponseEvent $event)
{
$event->getRequest()->attributes->set('_request_type', $event->getRequestType());
}
Затем в контроллере вы сможете:
$requestType = $this->getRequest()->attributes->get('_request_type');
Опять же, это непроверено. Вам нужно будет выписать полный класс слушателя и добавить его в файл конфигурации служб, но, кроме этого, я думаю, что это сработает.
Ответ 3
Просто, просто вызовите метод getMethod()
на ваш объект Request
:
$method = $this->get('request')->getMethod();
Это вернет HTTP-метод текущего запроса, например. GET
, POST
, PUT
или DELETE
.