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

时间:2015-09-22 13:56:51

标签: php laravel laravel-5

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

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

所以,我收到了这个错误 -

enter image description here

我做错了什么?

8 个答案:

答案 0 :(得分:36)

试试这个:

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

答案 1 :(得分:23)

几乎所有目前的答案似乎都存在一个重大错误,因为它们显示 BOTH GET和POST数据。不是 POST数据。

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

use Request;

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

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

request()->post();

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

use Illuminate\Http\Request;

public function add_question(Request $request)
{
    return $request->post();
}

有关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

答案 2 :(得分:5)

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

use Request;

并确保它与其他班级不冲突。

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

答案 3 :(得分:4)

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

Illuminate\Http\RequestSymfony\Component\HttpFoundation\Request扩展而来,它有两个存储请求参数的类变量。

public $query - 用于GET参数

public $request - 用于POST参数

用法:仅获取帖子数据

$request = Request::instance();
$request->request->get('my_param');

来源here

答案 4 :(得分:1)

您可以将所有发布数据输入此功能:-

$postData = $request->post();

,如果要提交特定文件,请使用它:-

$request->post('current-password');

答案 5 :(得分:0)

至少应该是这样:

public function login(Request $loginCredentials){
     $data = $loginCredentials->all();
     return $data['username'];
}

答案 6 :(得分:0)

你可以使用它

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

import Illuminate\Http\Request

use Illuminate\Support\Facades\Request或其他。

答案 7 :(得分:-1)

最好使用Dependency而不是将它附加到类中。

<system.webServer>
    <defaultDocument>
      <files>
        <clear />
        <add value="index.html" />//Path of your Page
      </files>
    </defaultDocument>
</system.webServer>

或者如果您更喜欢使用输入变量

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

现在可以使用laravel提供的全局请求方法

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

例如,获取表单输入的first_name。

request()