Laravel 控制器

zhangsen發表於2019-05-30

1. Controller

  1. request
  2. session
  3. response
  4. middleware

1. Controller之Request

  1. laravel中的請求使用的是symfony/http-foundati0n元件

  2. 請求裡面存放了$_GET、$_POST、$_COOKIE、$_FILES、$_SERVER等資料

    獲取請求中的值

    判斷請求型別

//1. 取值
echo $request->input('name');
echo $request->input('age','未知');

        if($request->has('name')){
            echo $request->input('name');
        }else{
            echo '無引數';
        }

//獲取所有引數
$data =  $request->all();
dd($data);

             //2. 判斷請求型別
        echo $request->method();
        if($request->isMethod('GET')){
            echo 'yes';
        }else{
            echo 'no';
        }

//是否是ajax
$bool = $request->ajax();
dd($bool);

//路由是否是
$bool = $request->is('student/*');
dd($bool);

//輸出路由
echo $request->url();

2. Controller之session

laravel中使用session有三種方法

  1. HTTP request類的session()方法
  2. session()輔助函式
  3. session facade
| Supported: "file", "cookie", "database", "apc",
|            "memcached", "redis", "array"

  'driver' => env('SESSION_DRIVER', 'file'),

支援多種驅動,預設支援file驅動

//1.http request session
$request->session()->put('key1','value1');
echo $request->session()->get('key1');

//2. session()
session()->put('key1','value1');
echo session()->get('key1');

//3. Session
Session::put('key3','value3');
echo Session::get('key3');
echo Session::get('key4','default');

//以陣列的形式
Session::put(['key4'=>'value4']);
echo Session::get('key4','default');

//把資料放到session的陣列中
Session::push('student','care');
Session::push('student','winne');
$res =   Session::get('student');
dd($res);

//取出資料並刪除
$res =   Session::pull('student','default');
dd($res);

//取出所有的session
$res = Session::all();
dd($res);

//判斷session中某個key是否存在
if(Session::has('key1')){
  $res = Session::all();
  dd($res);
}else{
  echo '沒有';
}

//刪除session的某個值
Session::forget('key1');

//刪除session中所有的值
Session::flush();

//第一次返回存在,第二次不存在
Session::flash('key-flash','val-flash');
echo Session::get('key-flash');

3. Controller之respone

響應的常見型別

  1. 字串
  2. 檢視
  3. json
  4. 重定向
//3. 響應json
$data = [
  'errCode' => 0,
  'errMsg'  => 'success',
  'data'    =>  'care'
];
//dd($data);
return response()->json($data);

//4. 重定向
return redirect('session2');  //跳轉
return redirect('session2')->with('message','我是快閃資料');
//驗證
return Session::get('message','暫無資訊');

//action
return redirect()->action('StudentController@session2')->with('message','我是快閃資料');

//route
return redirect()->route('session2')->with('message','我是快閃資料');

//返回上一頁
return redirect()->back();

4. Controller之Middleware

中介軟體有什麼作用

​ Laravel中介軟體提供一個方便的機制來過濾進入應用程式的HTTP請求

場景

​ 有一個活動,在指定日期後開始,如果活動沒有開始只能訪問宣傳頁面

  • 新建中介軟體

  • 註冊中介軟體

  • 使用中介軟體

  • 中介軟體的前置和後置操作
<?php
namespace App\Http\Middleware;
class Activity 
{
    //前置操作
    public function handle($request ,\Closure $next)
    {
      if(time() < strtotime('2019-5-27')){
      return redirect('activity0');
      }
      return $next($request);
    }

    //後置操作
    public function handle($request ,\Closure $next)
    {
        $response = $next($request);
        echo($response);
//        echo '後置操作';
    }
}
   protected $routeMiddleware = [
        'activity' => \App\Http\Middleware\Activity::class,
    ];
Route::get('activity0',['uses'=>'StudentController@activity0']);
Route::group(['middleware'=>['activity']],function (){
    Route::get('activity1',['uses'=>'StudentController@activity1']);
    Route::get('activity2',['uses'=>'StudentController@activity2']);
});

相關文章