75

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-

enter image description here

What I am doing wrong?

Abrar Jahin
  • 13,970
  • 24
  • 112
  • 161
  • What is the problem ? – Cyrbil Sep 22 '15 at 13:57
  • Non-static method Illuminate\Http\Request::all() should not be called statically, assuming $this from incompatible context – Abrar Jahin Sep 22 '15 at 13:59
  • 2
    The code above is fine. All that is needed is the line `use Illuminate\Support\Facades\Request;` at the top of the file. For just the post data, `Request::post()` could be used instead. – Dave F May 27 '21 at 00:08

8 Answers8

88

Try this :

use Illuminate\Support\Facades\Request;
public function add_question(Request $request)
{
    return $request->all();
}
Md Rashedul Hoque Bhuiyan
  • 10,151
  • 5
  • 30
  • 42
88

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:

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
Yahya Uddin
  • 26,997
  • 35
  • 140
  • 231
14

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

Victor Anuebunwa
  • 2,553
  • 2
  • 24
  • 34
6

You should use the facade rather than Illuminate\Http\Request. Import it at the top:

use Request;

And make sure it doesn't conflict with the other class.

Edit: This answer was written a few years ago. I now favour the approach suggested by shuvrow below.

Joel Hinz
  • 24,719
  • 6
  • 62
  • 75
3

You can get all post data into this function :-

$postData = $request->post();

and if you want specific filed then use it :-

$request->post('current-password');
nageen nayak
  • 1,262
  • 2
  • 18
  • 28
1

its better to use the Dependency than to attache it to the class.

public function add_question(Request $request)
{
    return Request::all();
}

or if you prefer using input variable use

public function add_question(Request $input)
{
    return $input::all();
}

you can now use the global request method provided by laravel

request()

for example to get the first_name of a form input.

request()->first_name
// or
request('first_name')
Canaan Etai
  • 3,455
  • 2
  • 21
  • 17
1

You can use it

$params = request()->all();

without

import Illuminate\Http\Request OR

use Illuminate\Support\Facades\Request OR other.

Hiren Gohel
  • 4,942
  • 6
  • 29
  • 48
0

It should be at least this:

public function login(Request $loginCredentials){
     $data = $loginCredentials->all();
     return $data['username'];
}
Charmie
  • 2,468
  • 7
  • 33
  • 47