2017-06-30 18 views
1

Laravel 5.2でクッキーを設定できないという問題に遭遇しました。問題は、this postを読んだ後に解決されました。 (。だから私は必要なものソリューションが、説明ではありません)要するになぜwithCookie()が機能していないのですか?

return view('welcome')->withCookie(cookie('test', 'test', 45000)); 

これは動作しませんし、それを動作させるために、次のいずれか

public function index(CookieJar $cookieJar, Request $request) 
{ 
    if($request->referrer){ 
     $cookieJar->queue(cookie('referrer', $request->referrer, 45000)); 
    } 

    return view('welcome'); 
} 

または

$response = new \Illuminate\Http\Response(view('welcome')); 
$response->withCookie(cookie('referrer', $request->referrer, 45000)); 
return $response; 

私に迷惑をかけるのは、最初のコードがeを返さないということですrrorはクッキーを設定しません。実際に何か有効なことをしますが、クッキーは設定しません。それは実際に何をしていますか?なぜ、後の2つのソリューションが機能するのですか?

答えて

1

最初のオプションでは、実際にはCookieは含まれていませんが、関数 'cookie'によって計算された値を持つ 'cookie'というパラメータが含まれています。つまり、のViewという関数を使用しています。これによって、XXXXというパラメータが作成されます。あなたは、ブレード・ビュー・ファイルに

{{$クッキー}}

のようなものを含めると実際には、あなたはcookie機能で生成された値を取得します。

これは実際に行っていることです。cookieというパラメータをビュービルダーに渡します。

cookieJarを使用しているため、自動的に保存されるため、2番目の方法が機能します。

あなたが実際に作成し、クッキーを返すwithCookie機能ませViewのが、Responseのを、使用しているので、第三作品。

TL; DR:ビューにではなく応答にクッキーを追加する必要があります。

関連する問題