Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [laravel] - ciasteczka
Forum PHP.pl > Forum > PHP > Frameworki
marcus753
Mam sobie taki kod:

  1. $value = Cookie::get('name');
  2. if(isset($value)){
  3. echo "zawartość ciasteczka: ".$value;
  4. }
  5. else{
  6. Cookie::make('name', 'Marcin', 30);
  7. echo "stworzono ciasteczko";
  8. }


Chciałbym w kontrolerze sprawdzić czy ciasteczko istnieje i jeśli istnieje to je wyświetlić w przeciwnym przypadku stworzyć je, jak mogę to zrobić ?
r4xz
  1. $value = Cookie::get('name');
  2. if(isset($value)){

isset($value) zawsze zwróci Ci true, poczytaj o isset oraz o Cookie::has

by_ikar
Ten isset jest tam zbędny.. No i co jest twoim problemem w tym kodzie, bo nie do końca rozumiem.
r4xz
Cytat(by_ikar @ 23.07.2014, 18:44:20 ) *
Ten isset jest tam zbędny.. No i co jest twoim problemem w tym kodzie, bo nie do końca rozumiem.

Szemrane sprawdzanie czy ciasteczko istnieje, Cookie::get nie ma w api jasno określone jak się zachowa gdy ciasteczko nie istnieje
marcus753
Cytat(by_ikar @ 23.07.2014, 18:44:20 ) *
No i co jest twoim problemem w tym kodzie, bo nie do końca rozumiem.


Problem jest taki że ten kod po prostu nie działa, zmienna $value zawsze jest pusta a if wyświetla stworzono ciasteczko? Zastanawiam się co robie źle ? dokumentacja mówi o przesyłaniu ciasteczka w responsie ale ja chce je po prostu zdefiniować/zapisać/odczytać w kontrolerze i to wszystko hmmm
memory
  1. Cookie::has('name') ? Cookie::get('name') : Cookie::queue('name','marcin',40);
marcus753
memory - dzięki za odpowiedź o to mi chodziło wink.gif rozumiem że funkcja:

  1. Cookie::queue('name','marcin',40);


tworzy nam ciasteczko które będzie widoczne dopiero przy następnym odświeżeniu strony

natomiast funkcja:

  1. Cookie::make('name', 'Marcin', 30);


tworzy nam ciasteczko które następnie musimy dodać do response i wtedy będzie widoczne od razu - dobrze rozumiem ?

w związku z tym mam 2 pytania:

jak usunąć ciastko ? funkcja forget nie działa:
  1. Cookie::forget('marcin');


Rozumiem że korzystając z response dodaje ciastko na zasadzie:
  1. $cookie = Cookie::make('name', 'value');
  2.  
  3. return Response::make($content)->withCookie($cookie);


tylko jak to sformułować abym wpisując to w pliku routes.php mógł zwrócić wybrany kontroler ew. wpisując to w moim kontrolerze mógł zwrócić wybrany widok;

bo teraz robie to np. tak:
  1. Route::get('cookie','CookieController@index');


albo

  1. return View::make('simple');


to raczej nie zadziała:

  1. return View::make('simple')->withCookie($cookie);
memory
  1. Cookie::forget('marcin'); powinno być Cookie::forget('name'); marcin to wartość nie nazwa.


W laravel ciasteczka są tworzone przy następnym żądaniu.

Jak chcesz użyć make

  1. Route::get('cookie', function()
  2. {
  3.  
  4. $cookie = Cookie::make('name', 'marcin', 5);
  5. $view = View::make('simple');
  6. return Response::make($simple)->withCookie($cookie);
  7.  
  8.  
  9. });
  10.  


Taka ścieżka utworzy ciasteczko. Będziesz mógł odczytać tylko w następnym żądaniu.

  1. Route::get('cookietest', function()
  2. {
  3.  
  4. $cookie = Cookie::get('name');
  5. return View::make('cookietest', array('cookie ' => $cookie));
  6. });
  7.  
marcus753
wybacz zapomniałem zaktualizować bo testowałem różne rozwiązania, ale oczywiście nie działa ta funkcja:
  1. Cookie::forget('name');


jedyne rozwiązanie na zmianę ciasteczka lub skasowanie to skorzystanie z funckji queue i ustawienie np. -1

  1. Cookie::queue('name','marcin1',-1);


Choć nie wygląda to zbyt profesjonalnie...

Trochę dziwne że manual opisuje tak kiepsko podstawowe operacje na ciasteczkach i sesjach (CRUD)


  1. Route::get('cookie', function()
  2. {
  3.  
  4. $cookie = Cookie::make('name', 'marcin', 5);
  5. $view = View::make('simple');
  6. return Response::make($simple)->withCookie($cookie);
  7.  
  8.  
  9. });


Dzięki za ten kod zaczynam rozumieć idee Response wink.gif a czy response może zamiast widoku zwrócić kontroler ?
memory
forget też musisz wysłać z żądaniem.

  1. $cookie = Cookie::forget('name');
  2. // Funkcja redirect pozwala przekierować na cotroller
  3. return Redirect::route('cookie')->withCookie($cookie);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.