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

Как проверить, был ли запрос POST или GET в Symfony2 или Symfony3

Мне просто интересно, есть ли очень простой способ (лучше всего: простой $this->container->isGet() я могу позвонить), чтобы определить, является ли запрос запросом $_POST или $_GET.

В соответствии с документами

Объект запроса содержит информацию о запросе клиента. Эта доступ к информации можно получить через несколько общедоступных свойств:

  • request: эквивалент $_POST;
  • query: эквивалент $_GET ($request->query->get('name'));

Но я не смогу использовать if($request->request) или if($request->query) для проверки, потому что оба являются существующими атрибутами в классе Request.

Так что мне было интересно, что Symfony предлагает что-то вроде

$this->container->isGet();
// or isQuery() or isPost() or isRequest();

упомянутого выше?

4b9b3361

Ответ 1

Если вы хотите сделать это в контроллере,

$this->getRequest()->isMethod('GET');

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

Ответ 2

Или это:

public function myAction(Request $request)
{
    if ($request->isMethod('POST')) {

    }
}

Ответ 3

Так как ответ предложил использовать getRequest(), который теперь устарел, Вы можете сделать это следующим образом:

$this->get('request')->getMethod() == 'POST'

Ответ 4

Или это:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

    if ($request->getMethod() === 'POST' ) {
}

Ответ 5

Вы можете сделать:

if($this->request->getRealMethod() == 'post') {
    // is post
}

if($this->request->getRealMethod() == 'get') {
    // is get
}

Просто прочитайте немного о request объект Symfony API.