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)
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)
你应该使用外观而不是Illuminate\Http\Request.将其导入顶部:
use Request;
Run Code Online (Sandbox Code Playgroud)
并确保它不与其他类冲突.
编辑:这个答案是几年前写的.我现在赞成以下shuvrow提出的方法.
对于那些来这里寻找“如何获取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')。
| 归档时间: |
|
| 查看次数: |
97933 次 |
| 最近记录: |