Laravel之请求(转载)


一. 请求路径的使用判别

laravel的控制器中要使用请求(request)功能,需要首先引入:

use Illuminate\Http\Request;
  • 1
  • 1

然后,在控制器的形参上定义:

public function update(Request $request){}
  • 1
  • 1

接下来就可以使用请求功能了 
若请求url为:

http://host/foo/bar?name=tom&passwd=123456
  • 1
  • 1

获取相对路由路径uri,则:

$uri = $request->path(); //输出:foo/bar
  • 1
  • 1

获取除query参数的完整url,则:

$url = $request->url(); //输出: http://host/foo/bar
  • 1
  • 1

获取包括query参数在内的完整url,则:

$url = $request->fullUrl(); //输出: http://host/foo/bar?name=tom&passwd=123456
  • 1
  • 1

判断路径是否某有某个前缀:

$request->is("foo*"); //输出:true
  • 1
  • 1

判断请求方法:

$request->isMethod('post'); //判断是否以post方法进行请求访问
  • 1
  • 1

二. 一般报文数据的使用

获取所有请求数据,以字典形式返回:

$input = $request->all();
  • 1
  • 1

获取指定键值的数据:

$name = $request->input('name'); //有则返回值,没有则返回null
$name = $request->name;//有则返回值,没有则返回null

$name = $request->input('name' ,"default_name"); //有则返回值,没有则返回"default_name"
$name = $request->input('list' ,"0.name"); //获取表单数组“list”中,第0个数组中的“name”的值
$name = $request->input('list' ,"*.name"); //获取表单数组“list”中,所有的“name”的值
$name = $request->input('user.name'); //当content-type为application/json,可获取user.name下的数据

$request->only(['username', 'password']);
或
$request->only('username', 'password');//除了username和password外其他字段不取

$request->except(['credit_card']);
或
$request->except('credit_card');//除了credit_card外其他字段都取
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

除此外,request还可以判断是否有某个键值:

$request->has('name');
  • 1
  • 1

三. 使用上一次请求的数据

有是需要将同一连接两次请求间的数据进行比对,这时可以使用:

//将当前请求时提交的数据写进session里
$request->flash(); 
$request->flashOnly(['username', 'email']);
$request->flashExcept('password');
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

下一次请求时,可以这样访问上一次的数据:

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

在模板里可以这么使用:

<input type="text" name="username" value="{{ old('username') }}">
  • 1
  • 1

四. 文件请求

当提交的数据是文件时,可以这么获取文件描述对象:

$file = $request->file('photo');
或
$file = $request->photo;
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

判断上传的文件中有没有需要的文件:

$request->hasFile('photo')
  • 1
  • 1

判断文件上传是否成功:

$request->file('photo')->isValid()
  • 1
  • 1

获取文件的路径和拓展名:

$request->photo->path(); //获取路径
$request->photo->extension(); //获取拓展名
  • 1
  • 2
  • 1
  • 2

将文件保存在磁盘上:

//5.1框架上
$request->file('photo')->move($destinationPath);
或
$request->file('photo')->move($destinationPath, $fileName);

//5.3框架上方法还没弄清

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

五. cookie操作

直接获取cookie的某个键值:

$value = $request->cookie('name');
  • 1
  • 1

在响应上带上cookie值,如下:

return response('Hello World')->cookie(
    'name', 'value', $minutes
);
或
return response('Hello World')->cookie(
    'name', 'value', $minutes, $path, $domain, $secure, $httpOnly
);
发布了14 篇原创文章 · 获赞 21 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/wanghongbiao1993/article/details/53767967