2016-03-22 11 views
7

私はいくつかのクリックイベントでクッキーを設定しています。そして、クッキーに値を格納した後、私はLaravelの公式ドキュメントを参照することで機能を開発したクッキーの存在をLaravelでクッキーを使用する方法5.2

  1. チェックに
  2. 取得クッキー値

をしたいです。コンソールにCookieが設定されていることが表示されます。しかし、その後、私はビュー(ブレードテンプレート)の2つのポイント(上のリストに記載)を解決することはできません。常に(Cookie::get('cookie.clients')) 'null'と表示されます。しかし、ブラウザコンソールにそのクッキー が表示されます。 誰かが答えを知っているなら、それは認められるでしょう。

ここに私のコードです。

コントローラ

use App\Client; 
use App\Http\Requests; 
use Illuminate\Http\Request; 
use Validator; 
use App\Http\Controllers\Controller; 
use App\Repositories\ClientRepository; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Cookie; 

class ClientController extends Controller 
{ 
    public function cookieadd(Request $request, Client $client) 
    { 
     $clients = []; 
     if (Cookie::get('cookie.clients') != null) 
     { 
      $clients = Cookie::get('cookie.clients'); 
     } 
     array_push($clients, $client); 

     Cookie::forever('cookie.clients', $clients); 

     return redirect('/client'); 
    } 
} 

ビュー

@if (Cookie::get('cookie.clients') != null) 
<p>cookie is set</p> 
@else 
<p>cookie isn't set</p> 
@endif 
+0

javascriptを使用して「some click event」でCookieを設定しているのですか、または「ClientController」で「cookieadd」メソッドを呼び出していますか? – Padarom

+0

@Padaromでは、メソッド 'cookieadd()'を呼び出すことによって –

答えて

1

あなたはRequestオブジェクトを経由してクッキーを表示しようとしましたか?

$value = $request->cookie('name'); 

詳細はlaravelドキュメントを参照してください:https://laravel.com/docs/5.2/requests#cookies

4

あなたはクッキーオブジェクトを作成しているが、あなたは、応答でそれを送信していません。

あなたはどちらか、コントローラ

$cookie = Cookie::forever('cookie.clients', $clients); 

return redirect('/client')->withCookie($cookie); 

にあなたの応答に直接それを追加したり、クッキーをキューイングし、自動的に応答に追加しAddQueuedCookiesToResponseミドルウェアを使用することができます。

Cookie::queue(Cookie::forever('cookie.clients', $clients)); 

return redirect('/client'); 
1

別の見方があります。

私が正しく理解していれば、Javascriptを使ってクライアント側でクッキーを設定し、サーバー側でそれを取りたいと思っています。

LaravelはCookieを暗号化し、$request->cookies()を使用すると復号化された値を取得し、クライアント側からCookieを取得すると解読プロセスに合格せず、nullを取得します。私は、適切なソースコードを掘り下げることができていないと思います。

クライアントはまだ生のPHP $_COOKIE['cookie_clients']を使用して、クッキーを取得できます。 PHP(as seen on php.net)によって._に変換されていることに注意してください。

また、あなたは$request->cookie()のよりLaravelのアプローチでそれを拾うことを可能にするであろう、Http/Middleware/EncryptCookies.php$exceptに関心のクッキーの名前を追加することができます。

私はうまくいけば、これはあなたがいずれかのアプローチが気に入らない場合は見てする場所のアイデアを提供し、ここでLaravelの周りに行くの他の多くの方法があることを確認しています。がんばろう。

関連する問題