Laravel-表單篇-controller


(慕課網_輕松學會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()方法,進行判斷

  

    

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM