Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:frameworks:laravel:enviando_mensajes_informativos

¡Esta es una revisión vieja del documento!


Enviando mensajes informativos con Laravel

Informando de errores

No solo podemos usar las sesiones para enviar mensajes entre vistas. También podemos utilzar el método withErrors() para rellenar la variable global $errors:

public function store() 
{
    // definimos las reglas
    $rules = [
        "title" => ["required", "max:255"],
        "description" => ["required", "max:1000"],
        "price" => ["required", "min:1"],
        "stock" => ["required", "min:0"],                
        "status" => ["required", "in:available,unavailable"],                        
    ];
 
    // validaciones
    request()->validate($rules);
 
    if (request()->status == 'available' && request()->stock == 0) {
 
        // Volveremos para atrás, pero sin perder los elementos
        // que enviamos por el formulario
        return redirect()
               ->back()
               ->withInput(request()->all())
               ->withErrors("If available must have stock);
    }
 
    $product = Product::create(request()->all());
    return redirect()->route("products.index");
 
}

Entonces, en la vista, podríamos coger los errores:

@if (isset($errors) && $errors->any())
    <div class="alert alert-danger">
        <ul>
        @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeac
        </ul>
    </div>
@endif
 

Informando de éxitos o informaciones

public function store() 
{
    // definimos las reglas
    $rules = [
        "title" => ["required", "max:255"],
        "description" => ["required", "max:1000"],
        "price" => ["required", "min:1"],
        "stock" => ["required", "min:0"],                
        "status" => ["required", "in:available,unavailable"],                        
    ];
 
    // validaciones
    request()->validate($rules);
 
    if (request()->status == 'available' && request()->stock == 0) {
 
        // Volveremos para atrás, pero sin perder los elementos
        // que enviamos por el formulario
        return redirect()
               ->back()
               ->withInput(request()->all())
               ->withErrors("If available must have stock);
    }
 
    $product = Product::create(request()->all());
 
    return redirect()
           ->route("products.index")
           ->withSuccess("The new product with id {$product->id} was created");
 
}
  • withSuccess(“valor”): es una manera corta de indicar que vamos a enviarle a la sesión el elemento llamado “success” con el valor valor. Si usásemos withInfo(“hola”) enviaríamos el elemento info con el valor hola.

Entonces, en la vista:

<body>
    @if (session()->has("success"))
        <div class="alert alert-success">
            {{ session()->get("success") }}
        </div>
    @endif
 
</body>
informatica/programacion/php/frameworks/laravel/enviando_mensajes_informativos.1686577686.txt.gz · Última modificación: por tempwin