2013-04-03 27 views
5

çerezleri ayarlanamaz ve kurabiye ayarlayamıyor:Ben laravel 4 en son sürümünü kullanıyorum laravel 4

Route::get('cookietest', function() 
{ 
    Cookie::forever('forever', 'Success'); 
    $forever = Cookie::get('forever'); 
    Cookie::make('temporary', 'Victory', 5); 
    $temporary = Cookie::get('temporary'); 
    return View::make('cookietest', array('forever' => $forever, 'temporary' => $temporary, 'variableTest' => 'works')); 
}); 

Görünüm komut:

@extends('layouts.master') 

@section('content') 
    Forever cookie: {{ $forever }} <br /> 
    Temporary cookie: {{ $temporary }} <br /> 
    Variable test: {{ $variableTest }} 
@stop 

Verim:

Forever cookie: 
Temporary cookie: 
Variable test: works 

Sayfayı yenilemem veya çerezleri tek bir rotada oluşturup oluşturmama sorun değil. Yukarıdaki işlemle hiçbir çerez ayarlanmadığını onaylayabilirim. Çerezler 'laravel_payload' ve 'laravel_session' yanı sıra 'remember_ [HASH]' var ve ben setcookie kullanarak düzenli PHP ile kurabiyeler kurabilirim.

Hiçbir hata bulunamıyor veya bulabildiğim herhangi bir yere kayıtlı değil. Her iki yerde de, Nginx ile birlikte Linux Mint'i yerel olarak ve Debian'ı sunucuda çalıştırıyorum.

cevap

16

Çerezlerin bu şekilde kullanılması amaçlanmamıştır, mevcut istek için değil, bir sonraki istek için ayarlanırlar. Ve bunları, documentation'da belirtildiği gibi Yanıtınıza manuel olarak eklemeniz gerekir. çerez isteği sonunda ekli olmadığı için

Yani bu kod

Cookie::forever('cookie', 'value'); 
$cookie = Cookie::get('cookie'); 

hiçbir sonuç elde edecektir.

Sen

Route::get('cookieset', function() 
{ 
    $foreverCookie = Cookie::forever('forever', 'Success'); 
    $tempCookie = Cookie::make('temporary', 'Victory', 5); 
    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')); 
}); 

sonra ilk erişim yoursite.local/cookieset gibi iki güzergah içinde bölerek deneyebilirsiniz ve daha sonra yoursite.local/cookietest bu şekilde çalışır ve çerez set olacağını görmek için.

0

AfterFilter, kontrol ünitesinde Cookie'yi ayarlamak için kullanılabilir. Çerezin bir denetleyicinin sınıf değişkeni $ çerezi içinde saklandığını varsayarsak. kontrolörün Yapıcıda, aşağıdaki kodu otomatik olarak müşteriye iade olursa olsun görünüm içine çerez ekleyecektir:

public function __construct() { 
    $cookie = &$this->cookie; 
    $this->afterFilter(function ($route, $request, $response) use(&$cookie) { 
      if ($cookie) { 
       $response->withCookie($cookie); 
      } 
    }); 
} 
15

laravel 4biz queue ile beklenen çerez davranışı olsun.

// Set a cookie before a response has been created 
Cookie::queue('key', 'value', 'minutes'); 

Örnek:

Cookie::queue('username', 'mojoman', 60 * 24 * 30); // 30 days 

Uyarı: olarak laravel 3 kullanımı put (http://v3.golaravel.com/api/class-Laravel.Cookie.html#_put).

Örnek: sıraya için

Cookie::put('username', 'mojoman', 60 * 24 * 30); // 30 days 
+0

+1. L4'te sıra yöntemi ile önemli bir not: Kuyruklu ve kuyruklu iki yöntem vardır. Birincisi bir alıcıdır ve önceden kuyruğa alınmış bir çerez döndürür, ikincisi bir çerez alır. Eğer yanlışlıkla '' ('isim', 'değer') 'olarak adlandırılırsa, sessizce başarısız olur çünkü 2 param kabul edebilir: bir anahtar ve isteğe bağlı bir varsayılan. –

+0

Dokümanlardaki "Cookie :: queue" bağlantısına bir bağlantı: http://laravel.com/docs/requests#cookies – Justin

+0

Yalnızca bununla çalışın. teşekkür – vuhung3990