如何在Laravel 5中获取POST的所有输入

Abr*_*hin 39 php laravel laravel-5

我正在使用Laravel 5并尝试在控制器中获取POST变量的所有输入,如下所示 -

public function add_question()
{
    return Request::all();
}
Run Code Online (Sandbox Code Playgroud)

所以,我得到这个错误 -

在此输入图像描述

我做错了什么?

Md *_*yan 44

试试这个 :

use Illuminate\Support\Facades\Request;
public function add_question(Request $request)
{
    return $request->all();
}
Run Code Online (Sandbox Code Playgroud)

  • 错误!它还将返回GET变量. (13认同)
  • @barbushin,如果这里的所有答案都错了,请在这里提供正确的答案. (12认同)

Yah*_*din 38

几乎所有当前的答案似乎都存在一个重大错误,因为它们显示了GOT和POST数据.不只是 POST数据.

您提到的代码作为接受的答案的问题是您没有导入外观.这可以通过在顶部添加以下内容来导入:

use Request;

public function add_question(Request $request)
{
    return Request::post();
}
Run Code Online (Sandbox Code Playgroud)

你也可以使用像这样的全局请求方法(由@Canaan Etai提到),不需要导入:

request()->post();
Run Code Online (Sandbox Code Playgroud)

但是,Request在控制器方法中导入的更好方法是依赖注入,如@shuvrow中所述:

use Illuminate\Http\Request;

public function add_question(Request $request)
{
    return $request->post();
}
Run Code Online (Sandbox Code Playgroud)

有关DI的更多信息,请访问:

在任何一种情况下,您都应该使用:

// 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
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,有可靠的信息和很好的解释。谢谢你,你让我免于又一个小时的谷歌搜索。 (2认同)

Joe*_*inz 6

你应该使用外观而不是Illuminate\Http\Request.将其导入顶部:

use Request;
Run Code Online (Sandbox Code Playgroud)

并确保它不与其他类冲突.

编辑:这个答案是几年前写的.我现在赞成以下shuvrow提出的方法.

  • 错误!它还将返回GET变量. (7认同)

Vic*_*nwa 6

对于那些来这里寻找“如何获取POST的所有输入”的人

Illuminate\Http\Request延伸远离Symfony\Component\HttpFoundation\Request其具有两个类变量存储请求参数。

public $query -用于GET参数

public $request -用于POST参数

用法:仅获取帖子数据

$request = Request::instance();
$request->request->all(); //Get all post requests
$request->request->get('my_param'); //Get a post parameter
Run Code Online (Sandbox Code Playgroud)

来源在这里

编辑

对于Laravel> = 5.5,您可以简单地调用$request->post()$request->post('my_param')内部调用$request->request->all()$request->request->get('my_param')