8、Controller之Session

一、session默认配置目录:config / session.php

1、21行,默认使用 file 驱动。还支持"cookie", "database", "apc","memcached", "redis", "dynamodb", "array" 等驱动方式

2、34行,设置session有效期

3、88行,若使用数据库驱动,默认表为sessions

4、laravel中默认开启session start。App / Http / Kernel.php 34行

二、配置路由,需要用到session的,将其放到中间件里,如:

Route::group(['middleware' => ['web']] , function(){
    Route::any('/session1' , 'XxxController@session1');
    Route::any('/session2' , 'XxxController@session2');
});

二、使用session的三种方法

1、Http request类的session方法

先引入

扫描二维码关注公众号,回复: 11336287 查看本文章
use Illuminate\Http\Request;

存取session键值对

public function session1(Request $request){
    //存入键值对
    $request->session()->put('key1','value1');
}
public function session2(Request $request){
    //读取键值对
    echo $request->session()->get('key1');
    echo $request->session()->get('key1','default');//若key1不存在,则用default
}

2、session() 辅助函数

//session全局辅助函数
public function session1(){
    //存入键值对
    session(['key' => 'value']);
}
public function session2(){
    //读取键值对
    echo session('key');
    echo session('key', 'default');//若key不存在,则用default
}

3、Session facade

三、检索 & 删除一条数据(request方法)

//检索 & 删除一条数据()
public function session1(Request $request){
    $request->session()->put('key','value');
}
public function session2(Request $request){
    echo $request->session()->pull('key', 'default');
}

四、取出session所有的值(request方法)

//取出session所有的值
public function session1(Request $request){
    $request->session()->put('key1','value1');
    $request->session()->put('key2','value2');
}
public function session2(Request $request){
    dd($request->session()->all());
}

五、判断某个值是否存在,且不为null

if ($request->session()->has('users')) {
    //
}

六、判断某个值是否存在,可以为null

if ($request->session()->exists('users')) {
    //
}

七、删除session的值(request方法)

// 删除单个值...
$request->session()->forget('key');

// 删除多个值...
$request->session()->forget(['key1', 'key2']);

//全删
$request->session()->flush();

八、闪存数据(request方法)

第一次访问存在,第二次访问就消失

//闪存数据
public function session1(Request $request){
    $request->session()->flash('key', 'value');
}
public function session2(Request $request){
    echo $request->session()->get('key');
}

猜你喜欢

转载自www.cnblogs.com/mingliangge/p/13174528.html