手冊:https://laravelacademy.org/php
1.中間件的定義Middlewarecss
2.路由的定義和寫法html
3.控制器Controller之Requestlaravel
4.控制器Controller之Sessionweb
5.控制器Controller之Responseajax
6.控制器Controller之Middlewareredis
7.表單驗證數據庫
8.模板繼承json
9.跳轉數組
10.數據庫操做 ( http://www.cnblogs.com/fps2tao/p/7859322.html )
https://laravelacademy.org/post/19521.html
11.文件上傳 ( https://www.cnblogs.com/fps2tao/p/11346476.html )
使用案例:
----------------------
1.中間件的定義
1)能夠手動新建文件,也能夠經過命令生成
php artisan make:middleware OldMiddleware
2)中間件傳2個參數一個是$request和Closure $next (Closure 請參考:http://www.php.net/manual/zh/class.closure.php)
<?php namespace App\Http\Middleware; use Closure; class OldMiddleware { /** * Run the request filter. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if ($request->input('age') < 200) { return redirect('home'); } return $next($request); } }
3)Before / After 中間件
4)註冊中間件
4.1如果但願中間件被全部的 HTTP 請求給執行,只要將中間件的類加入到 app/Http/Kernel.php
的 $middleware
屬性清單列表中。
4.2指派中間件給路由
Route::get('admin/profile', ['middleware' => 'auth', function(){}
5)可終止中間件(請參閱 https://docs.golaravel.com/docs/5.0/middleware/#registering-middleware)
6) 註冊中間件分爲三種:分別是全局中間件、中間件組和指定路由中間件, https://laravelacademy.org/post/9539.html
2.路由的定義和寫法
as 給路由起別名 能夠在跳轉用到
Route::get('user/profile', [ 'as' => 'profile', 'uses' => 'UserController@showProfile' ]);
$url = route('profile'); $redirect = redirect()->route('profile');
下面是命名空間,分組,中間價的定義
Route::group(['prefix'=>'admins','namespace' => 'Admins','middleware'=>['cookie']],function() { //與上面路由相比須要登陸驗證 Route::get('/report/reportupload','ReportController@ReportUpload'); Route::post('/report/upload','ReportController@upload'); Route::get('/report/getexcel','ReportController@getExcel'); Route::get('/report/filelist','ReportController@fileList'); });
laravel 5.8 的路由寫法
3.控制器Controller之Request
//取值 $request->input('name','未知');//取值和沒有的時候默認值 $request->has('name');//判斷有沒有這個參數 $request->all();//全部值 //判斷請求以類型 $request->method();//POST GET $request->isMethod();//判斷是否是GET請求 $request->ajax();//判斷是否是ajax請求 //判斷請求是否是特定的請求 $request->is('person/*');//判斷這個請求是否是person控制器下的方法 //得到當前的url $request->url();
...
4.控制器Controller之session
1)使用HTTP Request類的session()方法
2)session()輔助函數
3)Session facade
配置文件在:config/session.php 支持多種形式file,dataase,memcached,redis (這裏其實能夠不變,在.env更改便可)
開啓session_start() 在Kernel.php 文件中有一個web的中間件,裏面開啓了session. 把這個web中間價加入路由中便可。
閱讀: https://laravelacademy.org/post/9546.html
//取值 $request->input('name','未知');//取值和沒有的時候默認值 $request->has('name');//判斷有沒有這個參數 $request->all();//全部值 //判斷請求以類型 $request->method();//POST GET $request->isMethod('post');//判斷是否是GET請求 $request->ajax();//判斷是否是ajax請求 //判斷請求是否是特定的請求 $request->is('person/*');//判斷這個請求是否是person控制器下的方法 //得到當前的url $request->url(); //1.HtTTP Request session() $request->session()->put('key','value1'); echo $request->session()->get('key'); //2.session() session()->put('key2','value2'); session()->get('key2'); //3.Session use Illuminate\Support\Facades\Session; Session::put('key3','value3'); Session::get('key3'); //詳細使用 Session::get('key3','default'); //數組形式存儲數據 Session::put(['key4'=>'value4']); Session::get('key4'); //把數據放到session數組中 Session::push('student','sean'); Session::push('student','imook'); $res = Session::get('student','default'); var_dump($res); //session取值完後刪除 $res = Session::pull('student','default'); var_dump($res); //取出全部值 Session::all(); //是否存在 Session::has('key1'); //刪除數據 Session::forget('key1'); //刪除所有值 Session::flush(); //暫存數據,一次性session Session::flash('key-flash','val-flash');
5.控制器Controller之Response
響應的常見類型有 : 字符串 ,視圖,json,重定向
$data =[ 'errCode'=>0, 'errMsg'=>'success', 'data'=>'sean', ]; response()->json($data);
redirect('person'); redirect('person')->with('message','我是快閃數據'); redirect()->action('StudentController@person')->with('message','我是快閃數據'); redirect()->route('person')->with('message','我是快閃數據');//路由別名 as redirect()-back();
6.控制器Controller之Middleware
7.表單驗證及數據保持(一次性session)
1)控制器驗證 2)Validator驗證
//控制器驗證
$rules = [ 'username' => 'required|max:10', 'password' => 'required|max:10', 'groupid' => 'required', 'grouptitle' => 'required', 'groupname' => 'required', 'pid' => 'required', 'groupqq' => 'required', ]; $message = [ 'username.required'=>'帳號不能爲空!', 'username.max'=>'帳號不能大於10位!', 'password.required'=>'密碼不能爲空!', // 'code.required'=>'驗證碼不能爲空!', // 'code.between'=>'驗證碼必須爲4位!', 'groupid.required'=>'groupid不能爲空!', 'grouptitle.required'=>'grouptitle不能爲空!', 'groupname.required'=>'groupname不能爲空!', 'pid.required'=>'pid不能爲空!', 'groupqq.required'=>'groupqq不能爲空!', ]; $this->validate($request,$this->rules,$this->message);//會自動跳轉 用一次性session
//Validator類驗證 use Illuminate\Support\Facades\Validator; $validator = Validator::make($request->input(),$rules,$message); if($validator->fails()) {//驗證失敗,重定向,或返回 return redirect()->back()->withErrors($validator); }
傳參數不一樣的另外一種形式(多傳了一組參數)
//控制器驗證 $this->validate($request, ['Student.name'=>'required|max:10','Student.age'=>'required|integer'], ['required'=>':attribute 爲必填項','integer'=>':attribute 是整數','max'=>':attribute 最大值'], ['Student.name'=>'姓名','Student.age'=>'性別'] );
//Validator類驗證 use Illuminate\Support\Facades\Validator; $validator = Validator::make($request->input(), ['Student.name'=>'required|max:10','Student.age'=>'required|integer'], ['required'=>':attribute 爲必填項','integer'=>':attribute 是整數','max'=>':attribute 最大值'], ['Student.name'=>'姓名','Student.age'=>'性別']); if($validator->fails()) {//驗證失敗,重定向,或返回 return redirect()->back()->withErrors($validator); }
錯誤信息模板顯示
@if (count($errors)) {{$errors->first()}} @foreach($errors->all() as $error) {{$error}} @endforeach @endif
數據保持 採用一次性session
8.模板繼承
模板的url路徑 :{{ asset('css/app.css') }},{{ url('/') }},{{ route('login') }}
表單裏面的數據 {{ csrf_field() }},
包含視圖 @include('view.name')