2013-11-22 86 views
0

我想設置一個cookie像laravel:在不同的路線,後來Laravel 4:Cookie沒有設置?

$cookie = Cookie::forever('knownWords', serialize($words)); 
       return Response::json(array('status' => "FAIL", 
        "msg" => "Info stored in cookie!"))->headers->setCookie($cookie); 

,然後訪問它,並把它作爲一個JSON響應,例如:

$words = array(); 
     if(Cookie::has('knownWords')){ 
      $words = unserialize(Cookie::get('knownWords')) 
     } 
     return Response::json(array('status' => "FAIL", 
      "msg" => "Not logged in! Cookie info attached.", 
      "data" => $words));   

我米沒有得到任何錯誤,但我可以確認它沒有進入Cookie :: has()if語句。任何想法的傢伙?我對餅乾相當陌生!如果您需要知道,我正在使用localhost和chrome!

編輯:我通過AJAX

回答

0

所以顯然我只是需要使用作曲家來更新Laravel。現在它可以工作。 :D

-2

調用這些路線嘗試使用withCookie()。我的意思是,改變這種:

return Response::json(array(
    "status" => "FAIL", 
    "msg" => "Info stored in cookie!" 
))->headers->setCookie($cookie); 

此:

return Response::json(array(
    "status" => "FAIL", 
    "msg" => "Info stored in cookie!" 
))->withCookie($cookie); 

這是我到目前爲止,和工作:

<?php // routes.php 

Route::get('/', function() { 
    return View::make('index'); 
}); 

Route::get('set', function() 
{ 
    $words = ['foo', 'bar']; 
    $cookie = Cookie::forever('knownWords', serialize($words)); 
    return Response::json(array('status' => "FAIL", "msg" => "Info stored in cookie!"))->withCookie($cookie); 
}); 

Route::get('see', function() 
{ 
    $words = array(); 

    if(Cookie::has('knownWords')){ 
     $words = unserialize(Cookie::get('knownWords')); 
    } 

    return Response::json(array('status' => "FAIL", 
     "msg" => "Not logged in! Cookie info attached.", 
     "data" => $words)); 
}); 

然後,視圖(簡單HTML與AJAX呼叫):

<html> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
    <script> 
     $(function() { 
      $.ajax({ 
       url: '{{ URL::to("set") }}', 
       success: function(response) { 
        console.log(response); 
       } 
      }); 
     }); 
    </script> 
</body> 
</html> 
+0

已經嘗試過了,顯然Response :: json()不能像其他響應一樣工作。 - > headers-> setCookie()是我在尋找解決方案時發現的,但這似乎也不起作用。 withCookie抱怨說這是一個未定義的方法。 – samuraiseoul

+0

嗯,它對我有用。我剛拷貝你的代碼,並在它之前添加了'$ words = ['foo','bar'];''。 –

+0

你是通過ajax調用它嗎? – samuraiseoul