Validación de formularios en Laravel

Publicado por parzibyte en

En este post voy a mostrarte cómo hacer el envío de un formulario con Laravel, así como la validación del mismo del lado del servidor.

Laravel provee una forma fácil de validar, además de mostrar los errores en una lista que puede estar bajo el formulario.

Nota: si quieres usar la validación con mensajes en español, por favor, mira este post, también te invito a ver más tutoriales de Laravel.

Formulario

El formulario queda como se ve a continuación:

Presta atención al action, que va a una ruta con nombre llamada “guardarArea“. Otra cosa que debes notar es el atributo name del input, pues ese nombre lo vamos a usar en la validación.

También fíjate en que incluye algo llamado “errores” cuyo código veremos abajo.

Ruta

En mi archivo de rutas, simplemente llamo a un método del controlador:

Se invocará al método agregar de AreasController.

El FormRequest

Para validar y dejar limpio el controlador, hay que crear un Request, pues nos permite tener mayor control y separar la validación:

Los requests se ubican en app/Http/Requests y deben extender de FormRequest.

Lo que importa son dos métodos: authorize y rules.

  • El de authorize indica si el usuario está autorizado para hacer esa petición (aquí podríamos verificar permisos o roles)
  • El de rules indica la validación

Para la validación simplemente regresamos un arreglo con las reglas, cuya lista completa puedes ver aquí.

El controlador

Dentro del controlador, vamos a recibir ese FormRequest que acabamos de crear.

La magia aquí ocurre en que el método del controlador será llamado únicamente si la validación pasa, es decir, en el controlador asumimos que ya está validado, pues si la validación falla, el método no será llamado

De esa forma separamos la lógica.

Mostrar los errores

Ahora vamos a ver la plantilla de errores. Laravel pone los errores de la validación en una variable llamada $errors.

Podemos iterarlos con un foreach (para obtenerlos a todos se usa $errors->all()) e imprimirlos.

El contenido del archivo que muestra errores queda así:

Y lo estamos incluyendo en el formulario.

Demostración

Ahora veamos la demostración. Como lo dije anteriormente, el método del controlador ni siquiera será llamado si la validación falla.

Al enviar el formulario con datos erróneos:

Validación de formulario con Laravel

Y si los datos son correctos, se muestra un mensaje de retroalimentación exitoso.

Más validaciones

Si crees que esa validación es muy simple, te muestro otra:

En este caso incluso estoy validando que el id de área exista en otra tabla.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: