2013-09-06 16 views
8

Come si utilizzano i cookie in Laravel 4?Uso dei cookie in Laravel 4

Sono sicuro che è semplice e qualcosa non fa semplicemente clic con me, ma ho bisogno di un piccolo aiuto.

Per quanto posso dire, è necessario creare un cookie in questo modo:

$cookie = Cookie::make('test-cookie', 'test data', 30); 

Poi, a parte il ritorno di una risposta su misura, come si fa a impostarla? A che serve impostarlo con una risposta personalizzata? Quando mai avrei voluto farlo?

Cosa fare se si desidera impostare un cookie e restituire una visualizzazione? A che serve lo return Response::make('some text')->withCookie('test-cookie') oltre a mostrarmi come usare withCookie()?

Come ho detto, sono probabilmente manca solo qualcosa qui, ma come avrei usato un cookie in modo pratico ...

... come se qualcuno entra informazioni, log in, ecc mi e' mi piacerebbe impostare un cookie e portarli a una pagina creata con una vista?

risposta

10

Per restituire un cookie con una vista, è necessario aggiungere la vista a un oggetto Risposta e restituire il tutto. Ad esempio:

$view = View::make('categories.list')->with('categories', $categories); 
$cookie = Cookie::make('test-cookie', 'test data', 30); 

return Response::make($view)->withCookie($cookie); 

Sì, è un po 'più da scrivere. Il ragionamento è che Views e Response sono due cose separate. È possibile utilizzare Views per analizzare contenuti e dati per vari usi, non necessariamente per l'invio al browser. Questo è ciò che la risposta è per, e perché se si desidera impostare le intestazioni, i cookie, o le cose di tale natura, è fatto tramite l'oggetto risposta.

+0

come retrive i dati dei cookie? –

1

È possibile anche allegare i cookie per reindirizza come questo

return Redirect::route('home')->withCookie($cookie); 
+0

Sì, è possibile. E fino ad ora pensavo solo di poterlo fare con 'Response :: make'. –

3

Come descritto nelle altre risposte, è possibile collegare i cookie alla risposta/Vista/redirect abbastanza semplice.

$cookie = Cookie::make('name', 'value', 60); 
$response = Response::make('Hello World'); 

return $response->withCookie($cookie); 

o

$cookie = Cookie::make('name', 'value', 60); 
$view = View::make('categories.list'); 

return Response::make($view)->withCookie($cookie); 

o

$cookie = Cookie::make('name', 'value', 60); 

return Redirect::route('home')->withCookie($cookie); 

Ma non è necessario allegare il cookie alla risposta. Utilizzando Cookie: queue(), nello stesso modo in cui useresti Cookie :: make(), il tuo cookie verrà incluso nella risposta al momento dell'invio. Non è necessario alcun metodo aggiuntivo conCookie().

Fonte: http://laravel.com/docs/requests#cookies

3

Questo è quello che io preferisco usare: in qualsiasi momento, è possibile mettere in coda un cookie da inviare nella richiesta successiva

Cookie::queue('cookieName', 'cookieValue', $lifeTimeInMinutes); 
+0

In qualche modo, questa coda funziona per me. make non ha funzionato per ragioni sconosciute. –

+0

Questa dovrebbe essere la risposta accettata. Perché fare qualcosa in 2 passaggi quando potresti farlo in uno? –