Laravel對談(session)


對談用於儲存有關跨請求的使用者資訊。Laravel提供了多種驅動器,如 file, cookie, apc, array, Memcached, Redis 和 database 用來處理對談資料。預設情況下,使用的檔案驅動程式,因為它是輕量級的。對談可以在config/session.php 檔案中進行組態。

存取對談資料

存取對談資料,我們需要通過HTTP請求來存取對談的一個範例。獲得範例後,我們就可以使用get()方法,這需要一個引數-「鍵」,以獲取對談資料。

$value = $request->session()->get('key');
您可以使用 all() 方法來獲取所有的對談資料。

儲存對談資料

可以用put()方法被資料儲存在對談中。put()方法有兩個引數,「key」和「value」。

$request->session()->put('key', 'value');

刪除Session資料

forget() 方法用於刪除對談中的資料項。這個方法將「key」作為引數。

$request->session()->forget('key'); 

可使用flush()方法來刪除所有的對談資料。 使用 pull() 方法來檢索對談資料,然後刪除它。pull()方法也將採用 「key」 作為引數。forget() 和 pull() 方法之間的差異是forget() 方法將不會返回對談的值,而 pull() 方法將返回並刪除對談值。

範例

第1步 -  通過執行以下命令建立一個名為 SessionsController 的控制器。
php artisan make:controller SessionController
第2步 - 成功執行後,您會收到以下輸出 -

第2步 - 成功執行後,您會收到以下輸出 - app/Http/Controllers/SessionController.php.

app/Http/Controllers/SessionController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class SessionController extends Controller {
   public function accessSessionData(Request $request){
      if($request->session()->has('my_name'))
         echo $request->session()->get('my_name');
      else
         echo 'No data in the session';
   }
   public function storeSessionData(Request $request){
      $request->session()->put('my_name','Yiibai Yiibai');
      echo "Data has been added to session";
   }
   public function deleteSessionData(Request $request){
      $request->session()->forget('my_name');
      echo "Data has been removed from session.";
   }
}
第4步 - 新增以下行到檔案 - app/Http/routes.php

app/Http/routes.php

Route::get('session/get','SessionController@accessSessionData');
Route::get('session/set','SessionController@storeSessionData');
Route::get('session/remove','SessionController@deleteSessionData');
第5步 - 請存取以下網址來設定對談資料。

http://localhost:8000/session/set

第6步 - 輸出結果如下面的圖片所示。

第7步 - 請存取以下網址獲取對談資料。

http://localhost:8000/session/get

第8步 - 輸出結果如下面的圖片所示。


第9步 - 存取以下網址以刪除對談資料。

http://localhost:8000/session/remove

第10步 - 輸出結果如下面的圖片所示。