informatica:programacion:php:frameworks:laravel:sesiones
Sesiones en Laravel
config/session.php
public function store() { if (request()->status == 'available' && request()->stock == 0) { session()->put("error", "If available, must have stock"); return redirect()->back(); } session()->forget("error"); $product = Product::create(request()->all()); return redirect()->route("products.index") }
En la vista, aprovecharemos el mensaje de sesión para mostrarlo:
resources/views/layouts/master.blade.php:
<!doctype html> <html lang="es"> <head> <title>Laravel Products</title> </head> <body> @if (session()->has("error")) <div class="alert alert-danger"> {{ session()->get("error") }} </div> @endif @yield("content") </body> </html>
Si queremos que un dato de sesión solo se mantenga hasta la siguiente petición, usaremos entonces el método flash():
public function store() { if (request()->status == 'available' && request()->stock == 0) { session()->flash("error", "If available, must have stock"); return redirect()->back(); } $product = Product::create(request()->all()); return redirect()->route("products.index") }
En la siguiente petición que se haga, no existirá el elemento de sesión.
También podemos crear mensajes de sesión para operaciones de éxito o información:
public function store() { if (request()->status == 'available' && request()->stock == 0) { session()->flash("error", "If available, must have stock"); return redirect()->back(); } // Si el producto se ha almacenado correctamente $product = Product::create(request()->all()); session()->flash("success", "The new product with ID {$product->id} was created"); return redirect()->route("products.index") }
En la vista, aprovecharemos el mensaje de sesión para mostrarlo:
resources/views/layouts/master.blade.php:
<!doctype html> <html lang="es"> <head> <title>Laravel Products</title> </head> <body> @if (session()->has("error")) <div class="alert alert-danger"> {{ session()->get("error") }} </div> @endif @if (session()->has("success")) <div class="alert alert-success"> {{ session()->get("success") }} </div> @endif @yield("content") </body> </html>
informatica/programacion/php/frameworks/laravel/sesiones.txt · Última modificación: por tempwin
