Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:frameworks:laravel:sesiones

Sesiones en Laravel

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