Laravel Cookie

創建Cookie

Cookie可以通過 Laravel 的全局 cookie 助手來創建。

它是 Symfony\Component\HttpFoundation\Cookie 的一個實例,cookie可以附加到使用withCookie()方法的回應。 

調用 withCookie()方法創建 Illuminate\Http\Response 類的一個實例。由Laravel生成的cookie經過加密並簽名,並且不能由客戶修改或讀取。

這裏是示例代碼的解釋。
//Create a response instance
$response = new Illuminate\Http\Response('Hello World');

//Call the withCookie() method with the response method
$response->withCookie(cookie('name', 'value', $minutes));

//return the response
return $response; 

Cookie() 方法帶有3個參數。第一個參數是Cookie的名稱,第二個參數是cookie的值,而第三個參數是在此之後自動刪除cookie的值的持續時間。

Cookie可以使用 forever方法來來設置永遠生效,如下面的代碼所示。
$response->withCookie(cookie()->forever('name', 'value'));

檢索Cookie

當我們設置Cookie,可以通過 cookie()方法檢索cookie。cookie()方法只有一個參數,它是Cookie的名稱。cookie方法可以用Illuminate\Http\Request 的實例調用。

這裏是一個示例代碼。
//’name’ is the name of the cookie to retrieve the value of
$value = $request->cookie('name');

示例

第1步 - 執行下麵的命令來創建一個控制器用來操作 cookie。
php artisan make:controller CookieController
第2步 - 成功執行後,您會得到以下輸出-

第3步 - 複製下麵的代碼到檔 - app/Http/Controllers/CookieController.php。

app/Http/Controllers/CookieController.php

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

class CookieController extends Controller {
   public function setCookie(Request $request){
      $minutes = 1;
      $response = new Response('Hello World');
      $response->withCookie(cookie('name', 'virat', $minutes));
      return $response;
   }
   public function getCookie(Request $request){
      $value = $request->cookie('name');
      echo $value;
   }
}
第4步 - 添加下麵一行到檔 - app/Http/routes.php。

app/Http/routes.php

Route::get('/cookie/set','CookieController@setCookie');
Route::get('/cookie/get','CookieController@getCookie');
第5步 - 訪問以下網址設置cookie。

http://localhost:8000/cookie/set

第6步 - 將顯示如下所示的輸出。在下面螢幕截圖是火狐流覽器,但可根據你的流覽器情況可能有所不同,cookie也可以從cookie選項選中。

第7步 - 請訪問以下網址,從上面的URL得到 cookie。

http://localhost:8000/cookie/get

第8步 - 得到的輸出結果如下圖所示。



上一篇: Laravel請求 下一篇: Laravel回應