2016-08-20 4 views
2

を設定されている場合、私は、私はクッキーが値1Laravel 5.2:ブレード・リターンを経由してクッキーを取得するには、クッキーが

を使用して作成されていることがわかりJavascriptを

function createCookie(name, value, days) { 
     var expires; 
     if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     expires = "; expires="+date.toUTCString(); 
     } 
     else { 
     expires = ""; 
     } 
     document.cookie = name+"="+value+expires+"; path=/"; 
    } 

    .... 
    createCookie('my_cookie', 1, 365); 
    .... 

経由クロームクッキーインスペクタ経由でクッキーmy_cookieを設定してもヌルunset

を書き込み

@if (Cookie::get('my_cookie') !== null) // or Cookie::get('my_cookie') == 1 or Cookie::get('my_cookie') == '1' 
     <p>set</p> 
@else 
     <p>unset</p> 
@endif 

を:私が試した

経由Laravelブレイド

@if (request()->cookie('my_cookie') == '1') // or @if (request()->cookie('my_cookie') == 1) 
     <p>set</p> 
@else 
     <p>unset</p> 
@endif 

結果は常にunsetです。

+0

のみクッキーがlaravelで処理することができます取得するためのCookie::get('my_cookie')またはrequest()->cookie('my_cookie')を使用することができます。ネイティブクッキー '$ _COOKIE'を試してください。または、laravelでクッキーを作成してみてください。それで 'dd($ _ COOKIE)'がわかるでしょう。 – KmasterYC

+0

@KmasterYC:ありがとうございます。答えであなたのコメントを変換するなら、私はそれを受け入れるでしょう – Sefran2

+0

Ok。私は今移動する。ありがとうございました :) – KmasterYC

答えて

2

コメントから移動:laravelによって作成されたクッキーのみlaravelで処理できます。ネイティブクッキー$ _COOKIEを試してください。または、laravel、dd($ _ COOKIE)でクッキーを作成しようとすると、ネイティブPHPによって作成されたクッキーと全く違うものが表示されます。

1

laravelはCookieを暗号化するからです。 EncryptCookiesミドルウェアは、laravelによって設定されていなかったCookieを処理するためには使用できません。あなたのニーズに合わせて

App\Http\Middleware\EncryptCookiesのフィールド$exceptを使用することができますapp\Http\Kernel.php

2

$middlewareGroupsから\App\Http\Middleware\EncryptCookies::classを削除します。

ミドルウェアのコードは、この

<?php 

namespace App\Http\Middleware; 

use Illuminate\Cookie\Middleware\EncryptCookies as BaseEncrypter; 

class EncryptCookies extends BaseEncrypter 
{ 
    /** 
    * The names of the cookies that should not be encrypted. 
    * 
    * @var array 
    */ 
    protected $except = [ 
     'my_cookie' 
    ]; 
} 

のようになります。そして今、あなたはそれがlaravelによって作成

関連する問題