informatica:programacion:php:frameworks:laravel:enviando_mensajes_informativos
Tabla de Contenidos
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 valorvalor. Si usásemoswithInfo(“hola”)enviaríamos el elementoinfocon el valorhola.
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.txt · Última modificación: por tempwin
