filippe

Ahoj. Potreboval by som vybrať cookies ktoré som uložil ale nenôžem sa k nim dostať. Stále mi vracia Cookie::get null.

Skúšal som všetko možné ukladal som aj cez setcookie ale nejde mi to potom vybrať. Ako pracujete s cookies vy?

Ešte nie si členom CZ/SK Laravel komunity?

To možeš ľahko zmeniť. Registrácia je zdarma a ako registrovaný člen získaš množstvo výhod. Prečítaj si prečo by si mal byť členom.

Prihlásiť sa Zaregistrovať
Zoradiť odpovede:
wajrou
by @wajrou (137), pred 4 rokmi

Kdykoli chci použít cookies tak se nad tím znovu zamyslím... a nakonec použiji session (dočasné nastavení pro aktuální sezení) nebo databázi (trvalé nastavení pro všechna uživatelova sezení). Session využívá jedinou autentizační cookie (víc cookies zvětšuje HTTP hlavičky pro každou HTTP odpověď), o kterou se Laravel postará sám. Takto uložená data jsou k dispozici i v aktuálním požadavku kdy byla session vytvořena, programátor není omezován na použití jen před odesláním těla odpovědi...

https://laravel.com/docs/6.x/session

// Retrieve a piece of data from the session...
$value = session('key');

// Specifying a default value...
$value = session('key', 'default');

// Store a piece of data in the session...
session(['key' => 'value']);
xvital
by @xvital (460), pred 4 rokmi

A ako pracujes s cookie Ty?

Tipujem, ze cookie len vyrobis, ale neodosles ju v ramci odpovede. Dolezite je uvedomit si zakladnu vec - cookie sa ukladaju v prehlidaci navstevnika/uzivatela. V runtime nemozes ulozit cookie do prehliadaca navstevnika. Cookie potrebujes vyrobit A nasledne poslat s HTTP odpovedou. Jedine to je cesta ako susienku zapisat.

Samotna metoda Cookies::make() sa postara o vytvorenie cookie, ale tu este musis odoslat. Na to mozes pouzit bud

return response('Hello World')->cookie($cookie);

alebo cookie vyrobis a odlozis na odoslanie s najblizsou odpovedou

Cookie::queue('name', 'value', $minutes);

Metoda Cookie::queue() prijma v argumente aj instanciu cookie vytvorenu Cookie::make()

Cookie::queue(Cookie::make('name', 'value', $minutes));

K takto vytvorenym cookies potom pristupujes v ramci aktualneho requestu ako $request->cookie('name'), alebo pouzijes fasadu Cookie tak ako to pravdepodobne robis teraz, pomocou Cookie::get('my_cookie').

Tiez si treba uvedomit, ze ak posles cookie v odpovedi, tak dostupna v requeste bude az v najblizsom HTTP cykle, teda v dalsej poziadavke, ktora ti pride.

Snad to pomoze.