我正在使用Laravel 5并尝试在控制器中获取POST变量的所有输入 -
public function add_question()
{
return Request::all();
}
所以,我收到了这个错误 -
我做错了什么?
答案 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\Request
从Symfony\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()