laravel中如何区分get数据和post数据

可能有时候会碰到这样的场景:

有一个post提交请求,请求地址为:xxx?id=10,提交的post数据为:id=20
而在控制器中,我要同时得到get和post中数据
get中的id为10,而post中的id为20

这两个id分别要如何取出来?

====================

结合 @As 和 @冰糖雪梨 两位的回答,总结一下:

一、仅只取get数据(两种)
$request->query->get('name', '未设值')
$request->query('name', '未设值')

二、仅只取post数据(一种)
$request->request->get('name', '未设值')

三、get和post一起取,同名post覆盖get(三种)
$request->input('name', '未设值')
$request->name
$request->get('name', '未设值')

最后顺便吐槽一下这个“优雅”的框架

阅读 11.4k
3 个回答
// 路由
route::any('input', 'YourController@input')

// 测试方法
public function input(Request $request)
{
    // get方法
    echo $request->get('id');
    // get方法
    echo $request->query('id');
    // get方法
    echo $request->query->get('id');
    // 有post会覆盖get improve by amu(题主)
    echo $request->id;
    // 有post会覆盖get
    echo $request->input('id');
}

通过测试,一般情况下,如果post/get键名一样,post过来的数据,$request->xxx和$request->input('xxx')会覆盖掉get的取值。

php应该是都可以通过 $_GET/$_POST获取

框架的话:

//看源码 看来应该是可以这样获取 (已测)
$req->request->get("id", 0);//POST id
$req->query->get("id", 0);//GET id
$req->query("id", 0);//GET id
新手上路,请多包涵

直接这样获取post $request->post();获取所有post里的值
   

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏