一. 请求路径的使用判别
laravel的控制器中要使用请求(request)功能,需要首先引入:
use Illuminate\Http\Request;
然后,在控制器的形参上定义:
public function update(Request $request){}
接下来就可以使用请求功能了
若请求url为:
http://host/foo/bar?name=tom&passwd=123456
获取相对路由路径uri,则:
$uri = $request->path();
获取除query参数的完整url,则:
$url = $request->url(); //输出: http://host/foo/bar
获取包括query参数在内的完整url,则:
$url = $request->fullUrl(); //输出: http://host/foo/bar?name=tom&passwd=123456
判断路径是否某有某个前缀:
$request->is("foo*"); //输出:true
判断请求方法:
$request->isMethod('post');
二. 一般报文数据的使用
获取所有请求数据,以字典形式返回:
$input = $request->all();
获取指定键值的数据:
$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外其他字段都取
除此外,request还可以判断是否有某个键值:
$request->has('name');
三. 使用上一次请求的数据
有是需要将同一连接两次请求间的数据进行比对,这时可以使用:
$request->flash();
$request->flashOnly(['username', 'email']);
$request->flashExcept('password');
下一次请求时,可以这样访问上一次的数据:
$username = $request->old('username');
在模板里可以这么使用:
<input type="text" name="username" value="{{ old('username') }}">
四. 文件请求
当提交的数据是文件时,可以这么获取文件描述对象:
$file = $request->file('photo');
或
$file = $request->photo;
判断上传的文件中有没有需要的文件:
$request->hasFile('photo')
判断文件上传是否成功:
$request->file('photo')->isValid()
获取文件的路径和拓展名:
$request->photo->path();
$request->photo->extension();
将文件保存在磁盘上:
$request->file('photo')->move($destinationPath);
或
$request->file('photo')->move($destinationPath, $fileName);
五. cookie操作
直接获取cookie的某个键值:
$value = $request->cookie('name');
在响应上带上cookie值,如下:
return response('Hello World')->cookie(
'name', 'value', $minutes
);
或
return response('Hello World')->cookie(
'name', 'value', $minutes, $path, $domain, $secure, $httpOnly
);