Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [laravel] - ciasteczka
marcus753
post
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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ć ?


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
r4xz
post
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


  1. $value = Cookie::get('name');
  2. if(isset($value)){

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



--------------------
Go to the top of the page
+Quote Post
by_ikar
post
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Ten isset jest tam zbędny.. No i co jest twoim problemem w tym kodzie, bo nie do końca rozumiem.
Go to the top of the page
+Quote Post
r4xz
post
Post #4





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
marcus753
post
Post #5





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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

Ten post edytował marcus753 23.07.2014, 22:39:43


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
memory
post
Post #6





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


  1. Cookie::has('name') ? Cookie::get('name') : Cookie::queue('name','marcin',40);
Go to the top of the page
+Quote Post
marcus753
post
Post #7





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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);


Ten post edytował marcus753 24.07.2014, 11:26:05


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
memory
post
Post #8





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


  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.  


Ten post edytował memory 24.07.2014, 11:55:11
Go to the top of the page
+Quote Post
marcus753
post
Post #9





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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 ?


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
memory
post
Post #10





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


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);


Ten post edytował memory 24.07.2014, 12:38:20
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 04:31