How to get All input of POST in Laravel
I am using Laravel 5 and trying to get all input of POST variable in controller like this-
public function add_question()
{
return Request::all();
}
So, I am getting this errors-
What I am doing wrong?
Solution 1:
Try this :
use Illuminate\Support\Facades\Request;
public function add_question(Request $request)
{
return $request->all();
}
Solution 2:
There seems to be a major mistake in almost all the current answers in that they show BOTH GET and POST data. Not ONLY POST data.
The issue with your code as the accepted answer mentioned is that you did not import the facade. This can imported by adding the following at the top:
use Request;
public function add_question(Request $request)
{
return Request::post();
}
You can also use the global request method like so (mentioned by @Canaan Etai), with no import required:
request()->post();
However, a better approach to importing Request
in a controller method is by dependency injection as mentioned in @shuvrow answer:
use Illuminate\Http\Request;
public function add_question(Request $request)
{
return $request->post();
}
More information about DI can be found here:
- https://laravel.com/docs/5.6/container
- https://laravel.com/docs/5.6/controllers#dependency-injection-and-controllers
In either case, you should use:
// Show only POST data
$request->post(); // DI
request()->post(); // global method
Request::post(); // facade
// Show only GET data
$request->query(); // DI
request()->query(); // global method
Request::query(); // facade
// Show all data (i.e. both GET and POST data)
$request->all(); // DI
request()->all(); // global method
Request::all(); // facade
Solution 3:
For those who came here looking for "how to get All input of POST" only
TLDR;
Laravel >= 5.5
$request->post()
// or
$request->post('my_param')
Older Versions
$request->request->all(); //Get all post requests
$request->request->get('my_param'); //Get a post parameter
Explanation
class Illuminate\Http\Request
extends from Symfony\Component\HttpFoundation\Request
which has two class variables that store request parameters.
public $query
- for GET parameters
public $request
- for POST parameters
$request->request->all(); //Get all post requests
$request->request->get('my_param'); //Get a post parameter
$request->post()
for versions 5.5 and above internally calls $request->request->all()
or $request->request->get('my_param')
respectively.
Source here