====== Sesiones en Laravel ====== [[informatica:programacion:php:frameworks:laravel|Laravel]] * [[https://laravel.com/docs/10.x/session|HTTP session]] ''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'': Laravel Products @if (session()->has("error"))
{{ session()->get("error") }}
@endif @yield("content")
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'': Laravel Products @if (session()->has("error"))
{{ session()->get("error") }}
@endif @if (session()->has("success"))
{{ session()->get("success") }}
@endif @yield("content")