В Laravel, как я могу получить *только* параметры POST?

Я знаю, что можно использовать $request->get('my_param') или Input::get('my_param') для получения параметра запроса POST или GET в Laravel (сейчас я играю с версией v5/dev, но то же самое для 4.2).

Но как я могу убедиться, что мой my_param пришел через параметр POST, а не просто из ?my_param=42, добавленного к URL-адресу? (кроме того, что я вернулся к старым суперглобальным значениям $_POST и $_GET и выбросил возможность тестирования из окна )

(Примечание: я также знаю, что метод Request::get даст мне параметр POST для запроса POST, если оба параметра POST и URL/GET с тем же именем существуют, но... но если параметр попадает через URL-запрос строка вместо этого, я хочу, чтобы Laravel-идиоматический способ узнать это)


person NeuronQ    schedule 08.12.2014    source источник


Ответы (2)


В классе Illuminate\Http\Request (или фактически в классе Symphony, который он расширяет от Symfony\Component\HttpFoundation\Request) есть две переменные класса, в которых хранятся параметры запроса.

public $query - для GET-параметров

public $request - для параметров POST

Оба являются экземпляром Symfony\Component\HttpFoundation\ParameterBag, который реализует метод get.

Вот что вы можете сделать (хотя это не очень красиво)

$request = Request::instance();
$request->request->get('my_param');
person lukasgeiter    schedule 08.12.2014
comment
Спасибо, это то, что мне было нужно! - person NeuronQ; 09.12.2014
comment
Или вы можете использовать такой синтаксис: $request = Input::instance()->request->get('my_param'); То же самое, просто скажите - person Thomas Simoens; 11.06.2015
comment
$request-›post() или Request::post() - person vinsa; 28.07.2019

Зачем пытаться усложнять, когда можно легко сделать то, что нужно:

$posted = $_POST;
person mokrane2203    schedule 10.10.2016
comment
1. Не подходит для модульных/приемочных испытаний. 2. Не подходит для компонентов, которые зависят от Illuminate\Http\Request (т.е. если вы будете использовать адаптер ReactPHP для Laravel/Lumen). - person barbushin; 21.10.2017
comment
По возможности не следует напрямую обращаться к полям $_GET или $_POST, так как они могут содержать неэкранированные данные. - person Dragas; 25.10.2017