Laravel - sesja
Sesje służą do przechowywania informacji o użytkowniku we wszystkich żądaniach. Laravel zapewnia różne sterowniki, takie jakfile, cookie, apc, array, Memcached, Redis, i databasedo obsługi danych sesji. Domyślnie używany jest sterownik plików, ponieważ jest lekki. Sesję można skonfigurować w pliku przechowywanym pod adresemconfig/session.php.
Dostęp do danych sesji
Aby uzyskać dostęp do danych sesji, potrzebujemy instancji sesji, do której można uzyskać dostęp za pośrednictwem żądania HTTP. Po pobraniu instancji możemy użyćget() metoda, która przyjmie jeden argument, “key”, aby uzyskać dane sesji.
$value = $request->session()->get('key');
Możesz użyć all() metoda, aby uzyskać wszystkie dane sesji zamiast get() metoda.
Przechowywanie danych sesji
Dane mogą być przechowywane w sesji przy użyciu rozszerzenia put()metoda. Plikput() metoda przyjmie dwa argumenty, plik “key” i “value”.
$request->session()->put('key', 'value');
Usuwanie danych sesji
Plik forget()służy do usuwania elementu z sesji. Ta metoda zajmie“key” jako argument.
$request->session()->forget('key');
Posługiwać się flush() metoda zamiast forget()metoda usunięcia wszystkich danych sesji. Użyjpull()metoda pobierania danych z sesji i późniejszego ich usunięcia. Metoda pull () również zajmiekeyjako argument. Różnica międzyforget() i pull() metoda jest taka forget() metoda nie zwróci wartości sesji i pull() metoda zwróci go i usunie tę wartość z sesji.
Przykład
Step 1 - Utwórz kontroler o nazwie SessionController wykonując następujące polecenie.
php artisan make:controller SessionController --plain
Step 2 - Po pomyślnym wykonaniu otrzymasz następujące dane wyjściowe -
Step 3 - Skopiuj następujący kod do pliku pod adresem
app/Http/Controllers/SessionController.php.
app/Http/Controllers/SessionController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class SessionController extends Controller {
public function accessSessionData(Request $request) {
if($request->session()->has('my_name'))
echo $request->session()->get('my_name');
else
echo 'No data in the session';
}
public function storeSessionData(Request $request) {
$request->session()->put('my_name','Virat Gandhi');
echo "Data has been added to session";
}
public function deleteSessionData(Request $request) {
$request->session()->forget('my_name');
echo "Data has been removed from session.";
}
}
Step 4 - Dodaj następujące wiersze w app/Http/routes.php plik.
app/Http/routes.php
Route::get('session/get','SessionController@accessSessionData');
Route::get('session/set','SessionController@storeSessionData');
Route::get('session/remove','SessionController@deleteSessionData');
Step 5 - Odwiedź następujący adres URL, aby set data in session.
http://localhost:8000/session/set
Step 6 - Dane wyjściowe będą wyglądać tak, jak pokazano na poniższej ilustracji.
Step 7 - Odwiedź następujący adres URL, aby get data from session.
http://localhost:8000/session/get
Step 8 - Dane wyjściowe będą wyglądać tak, jak pokazano na poniższej ilustracji.
Step 9 - Odwiedź następujący adres URL, aby remove session data.
http://localhost:8000/session/remove
Step 10 - Zobaczysz komunikat, jak pokazano na poniższym obrazku.