この記事はLaravel5でのCookieの使い方を中心に紹介していますので、必要な方は参考にしてください
今日LaravelフレームワークでCookieを使ったところ、いくつか問題が発生し半分以上混乱しました。この間、Cookie の実装クラスを勉強し、Web サイトで Q&A などの多くの情報を見つけました。 Discovery では問題は解決されませんでした。インターネット上の回答は相互に盗用され、転載されています。実際、それは何の役にも立ちません。幸いなことに、最終的には解決策を見つけました。膨大な数の Laravel 愛好家や開発者に責任を負うと同時に、皆様が Cookie を使用する際に寄り道をしないように願っています。ここでは、皆様に向けて Laravel における Cookie の設定と読み取り方法を提供します。批判して修正する。
概要
Cookie の追加は実際には非常に簡単です。メソッドを使用する前に Cookie::make() を使用します。 、Cookie の設定を完了するには、Illuminate\Support\Facades\Cookie; を使用して Cookie ファサードを導入する必要があります (もちろん、\Cookie の直接使用を導入しなくても、名前空間を通じて自動的に読み込むことができます)。
しかし、設定後に Cookie の値を取得するにはどうすればよいでしょうか?関連する質問を検索した開発者は、インターネット上の答えは常に Cookie::get() であり、中にはコード
Cookie::make('test', 'hello, world', 10); echo Cookie::get('test');
Route::get('cookieset', function() { $foreverCookie = Cookie::forever('forever', 'Success'); $tempCookie = Cookie::make('temporary', 'Victory', 5);//参数格式:$name, $value, $minutes return Response::make()->withCookie($foreverCookie)->withCookie($tempCookie); }); Route::get('cookietest', function() { $forever = Cookie::get('forever'); $temporary = Cookie::get('temporary'); return View::make('cookietest', array('forever' => $forever, 'temporary' => $temporary, 'variableTest' => 'works')); }); //先上一个demo写入cookie $cookie = \Cookie('cookie_name', 'value', 5); $data = ['title'=>'hello world']; return \response() ->view('home.hello', $data) ->cookie($cookie);
2. Cookie ストレージ配列:
Route::get('cookieset', function() { $user_info = array('name'=>'laravel','age'=>12); $user = Cookie::make('user',$user_info,30); return Response::make()->withCookie($user); }); Route::get('cookietest', function() { dd(Cookie::get('user')); });
Add Cookie
#たとえば、コントローラーに「Hello, Laravel」という Cookie 値を設定し、有効期間を 10 分に設定する必要があります。 Cookie は自動的に応答に追加されるため、ここでは Cookie キュー メソッド Cookie::queue() を使用することをお勧めします。応答ヘッダーが多すぎます set-cookie レコードが作成されます。もちろん、Response を使用している場合は、Response で withCookie() メソッドを直接使用して、レスポンスに Cookie を追加できます。有効期限が切れていない Cookie 値の場合は、Cookie::forever() メソッドを使用できます。<?php namespace App\Http\Controllers; use Cookie; use App\Http\Controllers\Controller; class DashboardController extends Controller { /** * Show the application index. * * @return Response */ public function index() { Cookie::queue('test', 'Hello, Laravel', 10);//如果不适用上面的use Cookie,这里可以直接调用 \Cookie return view('index'); } }
public function index() { //$response = new Response(); $cookie = Cookie::make('test', 'Hello, Laravel', 10); return \Response::make('index')->withCookie($cookie); //return $response->make('index')->withCookie($cookie); }
return view('index')->withCookie($cookie)
個人テストは無効です。 queue() を使用することをお勧めしますGet Cookie 概要で述べたように、Cookie の使用は応答と切り離すことができません。リクエスト。 Cookie の値を取得するには 2 つのレベルがあり、1 つはサーバー、もう 1 つはクライアントです。サーバーに Cookie の値を取得させたい場合は、リクエストから取得する必要があります:Cookie::forever('test', 'Hello, Laravel');
すべての Cookie の値を取得したい場合は、パラメータは使用できません。メソッド: /**
* Queue a cookie to send with the next response.
*
* @param mixed
* @return void
*/
public function queue()
{
if (head(func_get_args()) instanceof Cookie) {
$cookie = head(func_get_args());
} else {
$cookie = call_user_func_array([$this, 'make'], func_get_args());
}
$this->queued[$cookie->getName()] = $cookie;
}
public function index(Request $request) { $cookie = $request->cookie('test'); dump($cookie); }
クライアントで使用する必要がある場合、Cookie の値を取得することはできません。まず第一に、withCookie($cookie) に応答してクライアントに送信するデータは文字列ではなく、Cookie オブジェクトです。値を取得するには、Cookie クラスが getValue() メソッドを提供します。たとえば、テンプレート内のコードを編集します:
#
public function index(Request $request) { $cookies = $request->cookie(); dump($cookies); }
array:3 [▼ "XSRF-TOKEN" => "CDSXUUYYHJHGDDFGHJAxPNNsVxLHGTRYUGJ" "laravel_session" => "870a775gthhgef0b9f357edc6r6587878999876556" "test" => "Hello, Laravel" ]
Passport を使用して Laravel5.5 に Auth 認証を実装する
Laravelにおける日時処理パッケージCarbonの使用について
以上がLaravel5におけるCookieの使用についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。