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

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

согласно документам,

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

  • request: из расчета $_POST;
  • query: из расчета $_GET ($request->query->get('name'));

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

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

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

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

5 ответов


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

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

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

редактировать: для Symfony 3 Используйте этот код

if ($request->isMethod('post')) {
    // your code
}

или такой:

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

    }
}

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

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

или такой:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

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

вы могли бы сделать:

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

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

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