laravel中及其常用的一些函数方法(自己看)和技巧(不断添加中)
手冊:https://laravelacademy.org/
?
1.中間件的定義Middleware
2.路由的定義和寫法
3.控制器Controller之Request
4.控制器Controller之Session
5.控制器Controller之Response
6.控制器Controller之Middleware
7.表單驗證
8.模板繼承
9.跳轉
10.數據庫操作 ( ?http://www.cnblogs.com/fps2tao/p/7859322.html ?)
使用案例:
----------------------
1.中間件的定義
1)可以手動新建文件,也可以通過命令生成
php artisan make:middleware OldMiddleware2)中間件傳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)
?
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');});?
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();//暫存數據,一次性sessionSession::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','我是快閃數據');//路由別名 asredirect()-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')
<!-- CSRF Token --> <meta name="csrf-token" content="{{ csrf_token() }}"> 參考:https://docs.golaravel.com/docs/5.0/templates/#other-blade-control-structures 循環 判斷等 其他請百度?
總結
以上是生活随笔為你收集整理的laravel中及其常用的一些函数方法(自己看)和技巧(不断添加中)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广播的最佳实践——实现强制下线功能(An
- 下一篇: hdu1258