Подтвердить что ты не робот

Как получить тип запроса (master/sub) в контроллере Symfony2?

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

4b9b3361

Ответ 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.