首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一套常用的Laravel Http 请求知识点汇总

1、访问请求实例:

在控制器中获取当前 HTTP 请求实例,需要在构造函数或方法中对 Illuminate\Http\Request 类进行依赖注入,这样当前请求实例会被服务容器自动注入:

namespaceApp\Http\Controllers;

useIlluminate\Http\Request;

classUserControllerextendsController{

 publicfunctionstore(Request$request){

     $name=$request->input('name');

 }

}

2、依赖注入 & 路由参数

如果还期望在控制器方法中获取路由参数,只需要将路由参数置于其它依赖之后即可,如下:

Route::put('user/','UserController@update');

仍然可以对 Illuminate\Http\Request 进行依赖注入并通过如下方式定义控制器方法来访问路由参数 id:

namespaceApp\Http\Controllers;

useIlluminate\Http\Request;

classUserControllerextendsController{

 publicfunctionupdate(Request$request,$id){

echo$id;

 }

}

3、通过路由闭包访问请求:

可以在路由闭包中注入 Illuminate\Http\Request,在执行闭包函数的时候服务容器会自动注入输入请求:

useIlluminate\Http\Request;

Route::get('/',function(Request$request){

echo9999;

});

4、获取请求 URL和方法

想要获取完整的 URL,而不是路径,可以使用请求实例提供的 url 或 fullUrl 方法, url 方法返回不带查询字符串的 URL,而 fullUrl 方法返回结果则包含查询字符串:

// 不包含查询字符串

$url=$request->url();

// 包含查询字符串

$url_with_query=$request->fullUrl();

$method=$request->method();// GET/POST

例如,我们请求 http://xxx.com/user/1?token=laravelacademy.org,则上述 $url 的值是 http://xxx.com/user/1

5、获取请求输入

1)、使用 all 方法以数组格式获取所有输入值:

$input=$request->all();

2)、获取单个输入值

// 获取name的值

$name=$request->input('name');

// 获取name的值 设置默认值

$name=$request->input('name','默认值');

// 处理表单数组输入时,可以使用“.”来访问数组

$input=$request->input('products.0.name');

3)、从查询字符串中获取输入

input 方法会从整个请求负载(包括查询字符串)中获取数值,query则只会从查询字符串中获取数值

// 获取name的值

$name=$request->query('name');

// 获取name的值 设置默认值

$name=$request->query('name','默认值');

// 类似 all 方法所做的

$query=$request->query();

6、通过动态属性获取输入

$name=$request->name;

注意:使用动态属性的时候,Laravel 首先会在请求中查找参数的值,如果不存在,还会到路由参数中查找。该功能的实现原理自然是魔术函数 __get。

7、获取输入的部分数据

如果需要取出输入数据的子集,可以使用 only 或 except 方法,这两个方法都接收一个数组或动态列表作为唯一参数:

// 只需要的值

$input=$request->only(['username','password']);

$input=$request->only('username','password');

// 排除法所需要的值

$input=$request->except(['credit_card']);

$input=$request->except('credit_card');

注:only 方法返回所有你想要获取的参数键值对,不过,如果你想要获取的参数不存在,则对应参数会被过滤掉.

8、判断请求参数是否存在

// 判断单个值是否存在

if($request->has('name')){

 // TODO

}

// 判断多个值是否存在

if($request->has(['name','email'])){

 // TODO

}

// 如果你想要判断参数存在且参数值不为空

if($request->filled('name')){

 // TODO

}

9、上一次请求输入

// 要从 Session 中取出上次请求的输入数据,可以使用 Request 实例提供的 old 方法

$username=$request->old('username');

页面输出

10、获取上传的文件

// 获取文件上传字段

$file=$request->file('photo');

$file=$request->photo;

// 判断是否存在

if($request->hasFile('photo')){

 //TODO

}

// 验证文件是否上传成功

if($request->file('photo')->isValid()){

 //TODO

}

// 文件路径 & 扩展名

$path=$request->photo->path();

$extension=$request->photo->extension();

以上是在项目开发中经常使用到的基本http请求,非常实用,大家认真多学习几遍哦!

看完本文有收获?点赞、分享是最大的支持!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200815A02U6K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券