2013-09-06 5 views
8

W jaki sposób korzystasz z plików cookie w Laravel 4?Korzystanie z plików cookie w Laravel 4

Jestem pewien, że to proste i coś mi po prostu nie klika, ale potrzebuję małej pomocy.

O ile mogę powiedzieć, trzeba utworzyć plik cookie takiego:

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

Wtedy, oprócz powrocie odpowiedzi niestandardowej, jak można go ustawić? Co to jest ustawienie z niestandardową odpowiedzią? Kiedy chciałbym to kiedykolwiek zrobić?

Co zrobić, jeśli chcę ustawić plik cookie i wyświetlić widok? Co dobrego sprawia, że ​​return Response::make('some text')->withCookie('test-cookie') faktycznie mnie odsuwa od pokazywania mi, jak używać withCookie()?

Jak mówię, ja chyba po prostu brakuje czegoś tutaj, ale w jaki sposób korzystać z plików cookie w praktyczny sposób ...

... jak ktoś wchodzi info, loguje się, etc i I” Czy chcesz ustawić plik cookie i przenieść go na stronę z widokiem?

Odpowiedz

10

Aby zwrócić plik cookie z widokiem, powinieneś dodać swój widok do obiektu odpowiedzi i zwrócić całość. Na przykład:

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

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

Tak, to trochę więcej do napisania. Rozumowanie jest takie, że Widoki i Odpowiedź to dwie odrębne rzeczy. Możesz używać widoków do analizowania treści i danych do różnych zastosowań, niekoniecznie do wysyłania do przeglądarki. Po to jest odpowiedź i dlaczego, jeśli chcesz ustawić nagłówki, pliki cookie lub rzeczy tego typu, jest to wykonywane za pomocą obiektu Response.

+0

jak sprowadzaniu dane plików cookie? –

1

Można również dołączyć cookies w celu przekierowania jak ten

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

Tak, możesz. A do tej pory myślałem tylko, że możesz to zrobić tylko za pomocą 'Response :: make'. –

3

Jak opisano w innych odpowiedzi, można dołączyć do reagowania Cookies/views/przekierowania wystarczy po prostu.

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

return $response->withCookie($cookie); 

lub

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

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

lub

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

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

Ale nie musisz dołączyć plik cookie do Twojej odpowiedzi. Używając Cookie: queue(), w taki sam sposób, w jaki użyjesz Cookie :: make(), twoje ciasteczko zostanie dołączone do odpowiedzi, gdy zostanie wysłane. Nie jest wymagana dodatkowa metoda withCookie().

Źródło: http://laravel.com/docs/requests#cookies

3

Ten jest co wolę używać: w każdej chwili można kolejce cookie mają być wysłane w następnym wniosku

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

W jakiś sposób ta kolejka działa dla mnie. make nie działa z nieznanych przyczyn. –

+0

To powinna być zaakceptowana odpowiedź. Dlaczego coś w 2 krokach, kiedy można to zrobić w jednym? –