1. Controller
- request
- session
- response
- middleware
1. Controller之Request
-
laravel中的請求使用的是symfony/http-foundati0n元件
-
請求裡面存放了
$_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有三種方法
- HTTP request類的session()方法
- session()輔助函式
- 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
響應的常見型別
- 字串
- 檢視
- json
- 重定向
//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']);
});