Validación de formularios en Laravel

Validación de formularios en Laravel

¡Hola! ¿Cómo están? ¡Bienvenidos de nuevo! Continuando con el curso de Laravel, hoy veremos la validación de formularios en Laravel. Empezaremos por identificar los campos obligatorios y opcionales, aprovechando las funciones de validación que nos ofrece Laravel, realizaremos los controles necesarios en la entrada de nuestros datos.

¡Empecemos!

Validar datos en Laravel

Una de las ventajas que nos ofrece un Framework como Laravel es que en muchos casos ya cuenta con funcionalidades que te facilitan tareas como la validación de datos. Laravel proporciona un sistema de validación robusto y expresivo que facilita la aplicación de reglas de validación a los datos de entrada.

Al utilizar la validación en Laravel, puedes asegurarte de que los datos cumplen con ciertos criterios antes de ser procesados o almacenados en la base de datos. Esto ayuda a prevenir errores, mejorar la seguridad y proporcionar una experiencia de usuario más consistente al garantizar que los datos cumplan con las expectativas del sistema.

Desplegar tu proyecto Laravel a producción

Adquiere la guía en formato PDF

Reglas de validación en Laravel

Laravel cuenta con una amplia variedad de funciones de validación para contemplar todos los casos posibles. A continuación, se muestra una lista de las reglas de validación más utilizadas:

  • Array
  • Between
  • Boolean
  • Current Password
  • Date
  • Different
  • Digits
  • Distinct
  • Email
  • Enum
  • Exclude
  • File
  • Integer
  • Max
  • Min
  • Not In
  • Nullable
  • Numeric
  • Password
  • Required
  • Size

Puedes encontrar todas las reglas de validación en la documentación oficial de Laravel.

Validar los datos de entrada en Laravel

Antes de establecer las validaciones en los formularios en Laravel. Primero revisaremos las migraciones creadas anteriormente. Para examinar los campos e identificar el tipo de dato, ya sea entero, cadena o fecha. Asimismo, analizaremos qué campos son obligatorios y cuáles son opcionales. de acuerdo a este análisis realizaremos nuestras validaciones.

Empecemos validando los formularios de nuestras vistas Profesores, Alumnos y Cursos.

Validar formulario Profesores

Ahora abriremos nuestro controlador “ProfesorController”, en el método “store” es donde vamos a controlar las validaciones los datos de entrada.  Antes de almacenar la información en la base de datos, aplicaremos las validaciones correspondientes utilizando las funciones proporcionadas por Laravel.

Utilizaremos la variable $request que almacena los datos de entrada. En el método “validate”, le proporcionaremos un array que contenga los campos de la base de datos, junto con sus respectivas validaciones.

$request->validate([
    'nombre_apellido' => 'required|max:75',
    'profesion' => 'required|max:35',
]);

Laravel nos informa que, en caso de que alguna de las validaciones no se cumpla, se devuelve un error de validación a la vista, y no procede a ejecutar la siguiente línea de código del programa. Por otro lado, si todas las validaciones se cumplen, el programa avanza a la siguiente línea de código.

Realizaremos lo mismo en el método “update” del controlador “ProfesorController”.

Validar formulario Alumnos

Del mismo modo, seguiremos el mismo procedimiento para validar los campos en nuestro formulario de alumnos. En el controlador “AlumnoController”, dentro del método “store” y “update”, implementaremos la validación correspondiente.

$request->validate([
    'nombre_apellido' => 'required|max:75',
    'edad' => 'required|integer',
]);

Validar formulario Cursos

De manera similar, realizamos el mismo procedimiento en la validación de los campos del formulario curso, con la diferencia de las relaciones que existen con las demás tablas. Dentro del controlador “CursoController”, en los métodos “store” y “update”, implementaremos la validación correspondiente para los campos presentes en nuestra tabla de cursos, así como para sus relaciones con las tablas de profesores y alumnos.

$request->validate([
    'materia' => 'required|max:75',
    'nivel' => 'required|max:35',
    'profesor_id' => 'required|integer',
    'alumno_ids' => 'required|array',
]);

Al establecer las relaciones entre las tablas “Profesores” y “Alumnos” con la tabla “Curso”, gestionamos la validación del campo “profesor_id” en la tabla de cursos como obligatorio y de tipo entero, ya que un curso está asociado a un profesor.

En cuanto a la validación del campo “alumno_id”, esta se lleva a cabo en la tabla pivot “alumno_curso”. Desde el formulario, se envía un array con los ‘alumno_ids’ que hacen referencia a los alumnos inscritos en ese curso. Inicialmente, en la validación, nos aseguramos de que el campo “alumno_ids” sea obligatorio de tipo array y verificamos que tenga al menos un registro.

Validación de formularios Laravel en las vistas

Ahora nos dirigimos a la vista de nuestros formularios, este es el lugar donde mostraremos los mensajes de error de validación del formulario, en caso que en los campos del formulario no cumplan con las validaciones definidas en su controlador.

Antes de comenzar con las validaciones de los formularios añadiremos código CSS en el archivo “layout.blade.php” para dar estilo a los mensajes de error en todas las páginas.

p {
    color: red;
}

Validación del formulario en la vista profesores

Comencemos a implementar la validación para la funcionalidad para profesores tanto para los formularios de crear y editar.

Validación formulario crear profesores

Para validar el formulario crear profesores  abrimos el archivo “create.blade.php” que se encuentra en la ruta “resources/views/profesores”, donde iremos integrando todas nuestras validaciones.

En el campo “Nombre y Apellidos” por debajo de la etiqueta input añadimos el código de validación para este campo utilizando la directiva que nos proporciona Blade “@error”, que nos permite imprimir el mensaje de error que corresponde a este campo.

@error('nombre_apellido')
    <p class="error-message">{{ $message }}</p>
@enderror

Ahora vamos a añadir el método “old” en las etiquetas input de «nombre y apellido». “Old” es una directiva de Blade que nos permite mantener en los campos el texto escrito por el usuario en caso de error de validación en uno de ellos.

value="{{ old('nombre_apellido') }}"

Igualmente, procederemos con la validación del campo “profesión” en el formulario de creación para profesores.

@error('profesion')
    <p class="error-message">{{ $message }}</p>
@enderror
value="{{ old('profesion') }}"

En todos los campos del formulario crear profesores añadiremos el método “old”

Validación formulario actualizar profesores

Recuerda que también contamos con la vista del formulario para actualizar los campos de la tabla “profesores” (es una tarea pendiente, en este caso de optimizar nuestras vistas para que solo exista un formulario para crear y actualizar). Realizar el mismo procedimiento para validar los campos en el formulario de actualizar profesores.

Si aún tienes dudas, puedes revisar el código fuente de esta clase en nuestro repositorio de GitHub totalmente gratis. Ahora podemos poner a prueba las funcionalidades de validación de campos en el formulario de profesores. Abrimos el navegador Chrome y en la ruta URL http://127.0.0.1:8000/profesores.

Validación del formulario en la vista alumnos

De la misma forma, que el formulario profesores realizamos en el formulario alumnos, los campos que definimos como requeridos son “Nombre y apellidos” y “Edad”.

Validación formulario crear alumnos

Abrimos el archivo “create.blade.php” que se encuentra en la ruta “resources/views/alumnos”. Donde realizaremos las validaciones del formulario.

Empecemos con la validación del campo “Nombre y apellido”.

@error('nombre_apellido')
    <p class="error-message">{{ $message }}</p>
@enderror
value="{{ old('nombre_apellido') }}"

Ahora la validación del campo “Edad”.

@error('edad')
    <p class="error-message">{{ $message }}</p>
@enderror
value="{{ old('edad') }}"

En los campos “Teléfono” y “Dirección” añadimos la funcionalidad de “old”.

Validación formulario actualizar alumnos

Realizar el mismo procedimiento para validar los campos en el formulario de actualizar alumnos.

Desplegar tu proyecto Laravel a producción

Adquiere la guía en formato PDF

Validación del formulario en la vista cursos

En el formulario de cursos, seguiremos los mismos pasos que en los formularios para profesores y alumnos, prestando especial atención a las relaciones que existen en este formulario

Validación formulario crear cursos

Abrimos el archivo “crear.blade.php” que se encuentra en la ruta “resources/views/cursos”. Empecemos con la validación del campo “Materia”.

@error('materia')
    <p class="error-message">{{ $message }}</p>
@enderror
value="{{ old('materia') }}"

Ahora la validación del campo “Nivel”.

@error('nivel')
    <p class="error-message">{{ $message }}</p>
@enderror
value="{{ old('nivel') }}"

Ahora la validación del campo “profesor_id”. Aquí tomaremos especial atención, ya que el campo es una relación que tiene con la tabla “profesores”.

@error('profesor_id')
    <p class="error-message">{{ $message }}</p>
@enderror

En el método “old” es diferente respecto de una etiqueta “input” que de un “select”. En este caso reemplazamos el código de la etiqueta option por el siguiente:

@if(old('profesor_id') == $profesor->id)
    <option value="{{$profesor->id}}" selected>{{$profesor->nombre_apellido }} </option>
@else 
    <option value="{{$profesor->id}}">{{ $profesor->nombre_apellido }} </option>
@endif

Por último añadimos las validaciones del campo “alumno_ids” que será similar al campo “profesor_id”.

@error('alumno_ids')
    <p class="error-message">{{ $message }}</p>
@enderror
@if(old('alumno_ids') == $alumno->id)
    <option value="{{$alumno->id}}" selected>{{$alumno->nombre_apellido }} </option>
@else 
    <option value="{{$alumno->id}}">{{ $alumno->nombre_apellido }} </option>
@endif

Validación formulario actualizar cursos

Realizar el mismo procedimiento para validar los campos en el formulario de actualizar cursos.

Realizamos las pruebas correspondientes de las funcionalidades implementadas. Recuerda que puedes descargar el código fuente de esta clase y todas las demás  clases en el repositorio de GitHub totalmente gratis.

Hasta aquí la clase de hoy validaciones en Laravel, en la siguiente clase veremos cómo traducir mensajes a español en Laravel.

¡Te espero en la siguiente clase!

Saludos y éxitos.

Victor Peña

Victor Peña

Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.

Deja un comentario

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