一.HTTP请求
1.基本示例:
通过依赖注入获取当前 HTTP 请求实例,应该在控制器的构造函数或方法中对Illuminate\Http\Request 类进行类型提示,当前请求实例会被服务容器自动注入控制器中:
public function store(Request $request){ $name=$request->input('name'); //}
如果还需要获取路由参数输入,只需要将路由参数置于其他依赖之后,例如你的路由定义如下
Route::put('user/{id}','UserController@update');
在控制器中:
public function update(Request $request,$id){ //}
2.基本请求信息
a.$uri=$request->path(); //返回请求的URI,,如果进入的请求路径是http://domain.com/foo/bar ,则path 方法将会返回foo/barb.$request->is('admin/*'); //is 方法允许你验证进入的请求是否与给定模式匹配。使用该方法时可以使用* 通配符c.$url=$request->url(); //获取完整的urld.获取请求方法及判断:$method=$request->method();if($request->isMethod('post')){ //}
二.获取输入
1.输入参数
a.$name = $request->input('name','default'); //获取用户输入的name,如果没有值,用default作为默认值b.$input = $request->input('products.0.name'); //处理表单数组输入时,可以使用”.”来访问数组c.$request->has('name'); //判断输入值是否出现d.$input = $request->all(); //获取所有数据e.获取部分数据$input = $request->only('username', 'password');$input = $request->except('credit_card');2.上一次请求输入:
a.将输入存储到一次性 Session:$request->flash(); //全部存入$request->flashOnly('username', 'email'); //仅存入username,email$request->flashExcept('password'); //除了password,全部存入b.将输入存储到一次性 Session 然后重定向
return redirect('form')->withInput();return redirect('form')->withInput($request->except('password')); 3.取出上次数据$all = $request->old();$username = $request->old('username');模板中使用全局函数old
{ { old('username') }}三.Cookies
1.请求cookie$value = $request->cookie('name');也可以使用辅助方法$value = Request::cookie('name');$value = Cookie::get('name');2.新增cookie
Cookie::queue('test', 'Hello, Laravel', 10, '/'); // 添加一个名为test的cookie,值为'Hello, Laravel',有效期10分钟示例:public function index(Request $request){ Cookie::queue('test2', 'Hello, Laravel', 10); return 'ok';}
response示例
$response = new \Illuminate\Http\Response();$response->withCookie(cookie('name', 'valuefff', 10));return $response;
3.设置永久cookie(5年有效期)
示例
$response = new \Illuminate\Http\Response();$response->withCookie(Cookie::forever('test10', 'Hello, Laravel'));return $response;
如果需要response,还要相应模板,可以使用,Response::view
$cookie = Cookie::forever('test29', 'Hello, Laravel');return \Response::view('test.hi')->withCookie($cookie);
4.清除cookie
$cookie = Cookie::forget('test25');return \Response::view('test.hi')->withCookie($cookie);
四.文件上传
1.创建$file = $request->file('photo');2.$request->hasFile('photo'),判断文件在请求中是否存在
3.验证文件是否在上传中出错
$request->file('photo')->isValid()4.保存
$request->file('photo')->move($destinationPath);$request->file('photo')->move($destinationPath, $fileName);完整示例:
//文件上传处理public function postFileupload(Request $request){ //判断请求中是否包含name=file的上传文件 if(!$request->hasFile('file')){ exit('上传文件为空!'); } $file = $request->file('file'); //判断文件上传过程中是否出错 if(!$file->isValid()){ exit('文件上传出错!'); } $destPath = realpath(public_path('images')); if(!file_exists($destPath)) mkdir($destPath,0755,true); $filename = $file->getClientOriginalName(); if(!$file->move($destPath,$filename)){ exit('保存文件失败!'); } exit('文件上传成功!');}