Predstavujú jednoduchý spôsob uchovávania údajov pre aktuálneho používateľa. Tento tutoriál vám poskytne základy práce s reláciami v Laravel.
V Laravel je relácia spôsob, ako ukladať informácie a správne spracovať požiadavky používateľa. Keď používateľ spustí aplikáciu Laravel, pre daného používateľa sa automaticky spustí relácia. Údaje o relácii sa uložia na server a do prehliadača používateľa sa odošle malý súbor cookie s jedinečným identifikátorom na identifikáciu relácie.
Reláciu môžete použiť na ukladanie údajov, ktoré chcete použiť na viacerých stránkach alebo požiadavkách. Reláciu môžete napríklad použiť na autentifikáciu užívateľa alebo uložiť iné informácie, ktoré chcete použiť počas relácie vo vašej aplikácii.
Ak chcete používať relácie v Laravel, musíte ich najskôr povoliť v súbore config/session.php
konfigurácie. V tomto súbore je možné nastaviť konfiguračné parametre súvisiace s reláciami. Napríklad trvanie relácie, ovládač, ktorý sa má použiť na uloženie údajov relácie, a miesto uloženia údajov relácie.
Nižšie je uvedený príklad súboru sessions.php
s trvaním relácie 120 sekúnd, použitie súborov uložených v adresári framework/sessions
:
<?php
use Illuminate\Support\Str;
return [
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => env('SESSION_CONNECTION', null),
'table' => 'sessions',
'store' => env('SESSION_STORE', null),
'lottery' => [2, 100],
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
'path' => '/',
'domain' => env('SESSION_DOMAIN', null),
'secure' => env('SESSION_SECURE_COOKIE'),
'http_only' => true,
'same_site' => 'lax',
];
Reláciu môžete nakonfigurovať aj pomocou premenných prostredia v súbore .env
. Ak chcete napríklad použiť ovládač databázovej relácie a uložiť údaje relácie do tabuľky relácie, s DB typu MySQL môžete nastaviť nasledujúce premenné prostredia:
SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions
Existujú tri spôsoby, ako pracovať s údajmi relácie v Laravel:
helper
z global session
;Request instance
. Vo všetkých týchto prípadoch budú údaje, ktoré uložíte v relácii, dostupné v následných požiadavkách uskutočnených tým istým používateľom, až kým relácia nevyprší alebo nebude manuálne zničená.
V Laravel pomocou funkcie Global Session Helper
je to pohodlný spôsob prístupu k službám relácie poskytovaným rámcom. Umožňuje vám ukladať a získavať údaje z relácie vo vašej aplikácii. Tu je príklad, ako použiť session helper
:
// Store data in the session
session(['key' => 'value']);
// Retrieve data from the session
$value = session('key');
// Remove data from the session
session()->forget('key');
// Clearing the Entire Session
session()->flush();
Môžete tiež zadať predbežnú hodnotudefinite ako druhý argument funkcie session
, ktorý sa vráti, ak sa zadaný kľúč nenájde v relácii:
$value = session('key', 'default');
Session Request
V Laravel sa inštancia požiadavky relácie vzťahuje na objekt, ktorý predstavuje požiadavku HTTP a obsahuje informácie o požiadavke, ako je metóda požiadavky (GET, POST, PUT atď.), URL požiadavky, hlavičky požiadavky a telo požiadavky. . Obsahuje tiež rôzne metódy, ktoré možno použiť na získanie a manipuláciu s týmito informáciami.
Zvyčajne máte prístup k inštancii súboru Session Request
cez premennú $request
v aplikácii Laravel. Napríklad k relácii možno pristupovať cez inštanciu požiadavky pomocou funkcie pomocníka session()
.
use Illuminate\Http\Request;
class ExampleController extends Controller
{
public function example(Request $request)
{
// Store data in the session using the put function
$request->session()->put('key', 'value');
// Retrieve data from the session using the get function
$value = $request->session()->get('key');
// Check if a value exists in the session using the has function:
if ($request->session()->has('key')) {
// The key exists in the session.
}
// To determine if a value exists in the session, even if its value is null:
if ($request->session()->exists('users')) {
// The value exists in the session.
}
// Remove data from the session using the forget function
$request->session()->forget('key');
}
}
V tomto príklade premenná $request
je to inštancia triedy Illuminate\Http\Request
, ktorý predstavuje aktuálnu požiadavku HTTP. Funkcia session
request instance vráti inštanciu triedy Illuminate\Session\Store
, ktorý poskytuje rôzne funkcie pre prácu s reláciou.
Ercole Palmeri
Rozvíjanie jemnej motoriky pomocou vyfarbovania pripravuje deti na zložitejšie zručnosti, ako je písanie. Na farbenie…
Námorný sektor je skutočnou globálnou ekonomickou veľmocou, ktorá smerovala k 150 miliardovému trhu...
Minulý pondelok Financial Times oznámili dohodu s OpenAI. FT licencuje svoju žurnalistiku svetovej triedy…
Milióny ľudí platia za streamovacie služby a platia mesačné predplatné. Je bežný názor, že si…