请求
请求实例
比如一个用户发送一个如下的请求:
Route::patch('user/','UserController@update');
那么在控制器中如何获取用户的输入呢?就可以结合上一篇博客中的方法参数设置,将请求实例传入方法中。请求实例的传入方式如下:
<?php
namespace App\Http\Controllers;
//这个就是请求实例
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* 这里将请求实例传递进入函数
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
//假设提交过来的表单中有一个name字段,这样就可以获取该字段了
$name=$request->name;
}
}
当然,不止可以在控制器中实例化请求类,在路由中也可以实例化请求类,但是如何设置该请求类的命名空间,那就再说了。
Route::get('user/{id}',function(Request $request){
$id=$request->id;
});
实例中方法介绍
下面假设请求的URL完整地址是:
http://www.lucifer.morning.star.com.cn/users/id/1/name/angle
路由设置为:
Route::get(‘users/id{id}/.name/{name}’,’UserController@show’)
path()
调用方式是:$request->path()
输出结果是:users/id/1/name/angle
is()
调用方式:$request->is('users/*')
输出结果:true/false
url()
调用方式:$request->url()
输出结果:users
fullUrl()
调用方式:$request->fullUrl()
输出结果:users/id/1/name/angle
method()
调用方式:request->method()
输出结果:show()
isMethod()
调用方式:$request->idMethod('show')
输出结果:true/false
all()
调用方式:$request->all()
输出结果:获取请求全部信息
input(‘key’[,’default value’])
调用方式:$request->input('name','default value')
输出结果:当name字段存在时,输出name的原始值,当name字段不存在时,输出该函数的第二个参数default value
另外在.
表示数组,下面假设传递过来的表单内容如下:
$form=[
'name'=>['John','Mike','Kitty']
];
那么获取name数组下的第二个参数可以使用下面的形式:
//注意,数组的下标是0开始的
$name=$request->input("name.1");
当你访问的是JSON格式的数据的时候,你可以这样读取其中的值:
$name=$request->input('name.firstName');
only()
调用方式:$request->only(['fieldName1','fieldName2']
输出结果:字段fieldName1
和fieldName2
字段的值
expect()
跟only
很像
intersect()
调用方式:$request->intersect(['fieldName1','fieldName2'])
输出结果:这两个字段存在时,才会进行读取
has()
调用方式:$request->has('name')
输出结果:true/false
flash()
调用方式:$request->flash()
输出结果:就是将该$request
缓存起来,但是该缓存仅有一次有效
old()
调用方式:$request->old()
输出结果:获取上一次$request
实例
cookie()
调用方式:$request->cookie('name')
输出结果:设置cookie
file()
调用方式:$request->file('fileName')
输出结果:Illuminate\Http\UploadedFile
类的一个实例
跟这个配套使用的还有另一个方式:isValid()
//判断该文件是否正确上传到服务器了
$request->file('fileName')->isValid()
hasFile()
调用方式:$request->hasFile('fileName')
输出结果:判断该文件是否存在,可以和上面的isValid
配套使用
extension()
调用方式:$request->fileName->extension()
输出结果:获取上传文件的扩展名
store()
使用该方法可以将文件保存,注意!!!这里的fileName2
是文件的完整名称路径。
调用方式:$request->fileName->store('fileName2'[,'Disk_Name'])
输出结果:保存文件的路径
storeAs()
调用方式:$request->fileName->saveAs('fileName2','fileSaveName'[,'Disk_Name'])
输出结果:就是可以指定保存文件的文件名,否则会像使用store
时一样,保存的文件名是随机生成的
重定向时同时传递请求实例
//直接调用withInput()函数将请求实例作为参数一同传递过去
return redirect()->withInput();
//删除其中的某些字段
return redirect()->withInput($request->expect('password'));