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请求,非常实用,大家认真多学习几遍哦!
看完本文有收获?点赞、分享是最大的支持!
领取专属 10元无门槛券
私享最新 技术干货