(慕課網_輕松學會Laravel-表單篇_天秤vs永恆老師_http://www.imooc.com/learn/699)
Controller
1、Controller-Request
1 //Request 2 public function request1(Request $request){ 3 //1、取值 4 // return $request->input('name','未知'); 5 //判斷有沒有sex 6 if($request->has('sex')){ 7 echo $request->input('sex'); 8 }else{ 9 echo '無參數'; 10 } 11 //獲取所有的參數 dd打印,會結束掉腳本 12 $res = $request->all(); 13 var_dump($res); 14 15 //判斷請求類型 16 echo $request->method(); 17 var_dump($request->isMethod('GET')); 18 var_dump($request->ajax()); 19 //判斷路由 20 var_dump($request->is('people/student/*')); 21 echo '<br>'; 22 //獲取當前的url 23 echo $request->url(); 24 }
2、Controller-session
默認使用file驅動,可以在配置文件中修改 Laravel中使用session有三種方式
1)、HTTP request類中的session()方法
2)、session()輔助函數
3)、Session facade
代碼示例:
路由
1 Route::group(['middleware' => ['web']], function(){ 2 Route::get('student/setSession','People\StudentController@setSession'); 3 Route::get('student/getSession','People\StudentController@getSession'); 4 Route::get('student/deleteSession','People\StudentController@deleteSession'); 5 });
use Symfony\Component\HttpFoundation\Request; use Illuminate\Support\Facades\Session;
1 //設置session 2 public function setSession(Request $request){ 3 //1 HTTP request 4 $request->session()->put('key1','value1'); 5 6 // 2 session() 7 session()->put('key2','value2'); 8 9 //3 Session類 10 Session::put('key3','value3'); 11 12 Session::put(['key5'=>'value5','key6'=>'value6']); 13 //把數據放在數組中 14 Session::push('student','helloJiu'); 15 Session::push('student','sss'); 16 17 //存入session,獲取一次就消失; 18 Session::flash('key-flash','value-flash'); 19 } 20 //獲取session 21 public function getSession(Request $request){ 22 //1 HTTP request 23 echo $request->session()->get('key1'); 24 25 // 2 session() 26 echo session()->get('key2'); 27 28 //3 Session類 29 echo Session::get('key3','default'); 30 //不存在,使用默認值 31 echo Session::get('key4','default'); 32 echo Session::get('key6'); 33 34 var_dump(Session::get('student','default')); 35 //從session拿出數據就刪除 36 var_dump(Session::pull('student')); 37 38 //取出session所有的值 39 echo '<pre>'; 40 var_dump(Session::all()); 41 42 //判斷session中某個key是否存在 43 var_dump(Session::has('key1')); 44 //第一次訪問時存在,下次消失 45 echo Session::get('key-flash'); 46 47 } 48 49 //輸出session中的值 50 public function deleteSession(){ 51 //在session中刪除key1和其對應的值 52 Session::forget('key1'); 53 54 //刪除所有的session 55 Session::flush(); 56 }
3 Controller-Response
響應的常見類型:字符串,視圖,Json,重定向
1 public function response(){ 2 3 $data = [ 4 'errCode' => 0, 5 'errMsg' => 'success', 6 'data' => 'helloJiu', 7 ]; 8 //響應一個json數據 9 return response()->json($data); 10 11 //重定向,with原理是存入session,獲取一次就刪除 12 return redirect('people/student/getSession')->with('message','hellojiu'); 13 return redirect()->action('People\StudentController@getSession')->with('message','helloJiu'); 14 return redirect()->route('people/student/setSession'); 15 return redirect()->back();//返回上一個頁面 16 }
4 Controller之Middleware
Laravel中間件提供了一個方便的機制來過濾進入應用程序的HTTP請求
如:有一個活動,在指定日期后開始,如果活動沒有開始,只能訪問宣傳頁面
新建中間件、注冊中間件、使用中間件、中間件的前置和后置操作
控制器中有三個方法,activity1(為注冊中間件)activity2\activity3都注冊了,代碼如下
1)控制器
1 //對應活動的宣傳頁面 2 public function activity1(){ 3 return '活動快要開始了'; 4 } 5 6 public function activity2(){ 7 return '活動進行中'; 8 } 9 public function activity3(){ 10 return '活動完成,謝謝參與'; 11 }
2)、路由系統
1 //宣傳頁面 2 Route::any('student/activity1','People\StudentController@activity1'); 3 //活動頁面,需要經過中間件驗證 4 Route::group(['middleware' => ['activity']], function(){ 5 6 Route::any('student/activity2','People\StudentController@activity2'); 7 Route::any('student/activity3','People\StudentController@activity3'); 8 });
3)、Http\Middleware\Activity.php中間件代碼
1 <?php 2 namespace App\Http\Middleware; 3 use Closure; 4 5 class Activity{ 6 7 //前置操作 8 public function handle($request, Closure $next){ 9 10 if(time() < strtotime('2016-12-3')){ 11 return redirect('people/student/activity1'); 12 } 13 //訪問當前頁面 14 return $next($request); 15 } 16 17 //后置操作 18 // public function handle($request, Closure $next){ 19 20 // $response = $next($request); 21 22 // //邏輯在請求后面執行 23 // echo '我是后置'; 24 // } 25 }
4)、App\Http\Kernel.php進行中間件注冊
1 protected $routeMiddleware = [ 2 'auth' => \App\Http\Middleware\Authenticate::class, 3 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 4 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 5 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 6 'activity' => \App\Http\Middleware\Activity::class, 7 ];
當請求activity2時,路由系統發現有中間件,就會通過Kerne找到Activity,調用其handle()方法,進行判斷