I know that one can use $request->get('my_param')
or Input::get('my_param')
to get a POST or GET request parameter in Laravel (I'm toying with v5/dev version now, but it's the same for 4.2).
But how can I make sure that my my_param
came via a POST parameter and was not just from a ?my_param=42
appended to the URL? (besides reverting to the ol' $_POST
and $_GET
superglobals and throwing testability out the window)
(Note: I also know that the Request::get
method will give me the POST param for a POST request, if both a POST an URL/GET param with the same name exist, but... but if the param land in via the url query string instead, I want a Laravel-idiomatic way to know this)
In the class
Illuminate\Http\Request
(or actually the Symphony class it extends fromSymfony\Component\HttpFoundation\Request
) there are two class variables that store request parameters.public $query
- for GET parameterspublic $request
- for POST parametersBoth are an instance of
Symfony\Component\HttpFoundation\ParameterBag
which implements aget
method.Here's what you can do (although it's not very pretty)