X

Cómo validar un formulario en Laravel

Una de las cosas mas básicas en la programación sea en el lenguaje que sea, es la validación de la informacion que introducimos a través de los formularios. Hoy veremos la forma de validar un formulario en Laravel, nuestro framework PHP preferido.

La ventaja de utilizar un framework como Laravel es que ya vienen integrados con funciones que hacen la programación mas sencilla, además ayudan a reutilizar código, ahorrar tiempo y a su vez logramos ser mas productivos ya que el tiempo vale oro.

[wp-svg-icons icon=»checkmark» wrap=»span»] ¿Como validar un formulario en Laravel?

Bien, el primer paso es instalar Laravel. Para ello pueden seguir los pasos de la documentación que se encuentra en su pagina oficial, entonces una vez que ya tengamos todas las herramientas listas podemos empezar.

Validar formularios con Laravel es muy sencillo ya que los frameworks vienen adaptados para programar lo menos posible, en este caso vamos a tomar como ejemplo la sección del formulario de login que ya viene por defecto en Laravel y que podemos encontrarlo simplemente colocando “http://tuproyecto.local/home” para que de esta manera te redireccione al login.

Laravel es un framework que trabaja de manera Modelo – Vista – Controlador (MVC), en el caso del formulario de login ya viene estructurado dentro de la configuración cuando se inicia un proyecto.

Si vamos al directorio app/Http/Controllers/Auth de nuestro proyecto, encontraremos los archivos de validación como el AuthController.php.

Ahora bien, ya que tenemos un conocimiento previo de la estructura del formulario de login, veamos como funciona la validación del formulario.

En el archivo que mencionamos anteriormente tenemos una función como esta:

protected function validator(array $data)
 {
 return Validator::make($data, [
 'name' => 'required|max:255',
 'email' => 'required|email|max:255|unique:users',
 'password' => 'required|confirmed|min:6',
 ]);
 }

Esta función se encarga de hacer la validación de la parte de registro de nuevo usuario del formulario de login.

Como mencionamos antes, Laravel trabaja de manera MVC, por lo que el llamado de las clases son diferentes a como solemos hacerlo en cualquier archivo php sin utilizar frameworks.

Nota: Es importante mencionar que los campos que queremos validar tienen que estar declarados en el modelo como podemos ver a continuación:

protected $fillable = ['name', 'email', 'password'];

La función a través de la variable «$data» recibe la informacion del formulario. Lo primero que debemos hacer es declarar el campo como requerido:

'name' => 'required',
'email' => 'required',
'password' => 'required'

De esta manera Laravel ya determina que debe validar de que estos campos no se encuentren vacíos, sin embargo, no nos asegura de que la información es la que queremos recibir, por eso nos brinda otras opciones. Una vez que lo declaramos como requeridos tenemos la opción de agregar otros parámetros como la cantidad de caracteres, si es un campo de correo electrónico, validar una url valida, etc.

  • ‘name’ => ‘required|max:255’: En este caso el nombre puede ser hasta un máximo de 255 caracteres y no puede estar vacío.
  • ‘email’ => ‘required|email|max:255|unique:users’: Indica que el campo tiene que tener un formato de correo electrónico (nombre@dominio.com), un máximo de hasta 255 caracteres, debe ser único y no puede estar vacío.
  • ‘password’ => ‘required|confirmed|min:6’: Debe ser mínimo de 6 caracteres y debe coincidir con la confirmación del campo de contraseña y por supuesto no puede estar vacío.

Al no cumplir con las condiciones que le indicamos e intentar guardar muestra los errores correspondientes:

[wp-svg-icons icon=»embed» wrap=»span»] Todos los campos vacíos

[wp-svg-icons icon=»envelop» wrap=»span»] Formato de correo electrónico incorrecto

[wp-svg-icons icon=»lock-2″ wrap=»span»] Validación de la contraseña

De esta manera hacemos la validación de formularios en Laravel, como ven es muy fácil. Ahora cuando queremos validar nuestros propios formularios debemos crear un archivo con las reglas de la validación en el directorio Requests que se encuentra «app/Http».

Lo primero que se debe hacer en modificar la función authorize y setear el valor de return a «true» para que una vez que llames a la validación desde el controlador, valide los campos que le indiques.

public function authorize()
 {
 return true;
 }

Luego debes crear la función «rules» con las validaciones:

public function rules()
 {
 return [
 'nombre' => 'required',
 'apellido' => 'required',
 'pais' => 'required',
 'ciudad' => 'required'
 ];
 }

Ya que hemos realizado la validación tenemos que mostrar los errores. Laravel por defecto tiene un clase que captura los errores y para mostrarlos colocamos el siguiente código en la vista:

@if (count($errors) > 0)
 <strong>Whoops!</strong> There were some problems with your input.<br><br>
 <ul>
 @foreach ($errors->all() as $error)
 <li>{{ $error }}</li>
 @endforeach
 </ul>
@endif

Así obtenemos los errores para imprimirlos en cualquier lugar del formulario, puedes utilizar cualquier framework de frontend como Bootstrap o Foundation para darle mas estilo a los mensajes y hasta el mismo formulario.

[wp-svg-icons icon=»loop-2″ wrap=»span»] ¿Como personalizar los mensajes de errores?

Si los mensajes de errores que se muestran no cumplen nuestras expectativas o simplemente queremos señalar algo en especifico, pueden ser personalizados sin cambiar el valor que trae por defecto. En nuestro archivo de validación que declaramos dentro del directorio Request después de la función «rules» podemos crear una nueva función con el nombre que deseen, en este caso la denominamos «messages»:

public function messages()
 {
 return [
 'nombre.required' => 'El campo nombre es obligatorio',
 'apellido.required' => 'El campo apellido es obligatorio',
 ];
 }

De esta manera se mostrara lo que hayamos definido.

Conclusión

Como podemos ver, validar un formulario en Laravel es super sencillo y fácil de manejar, al ser una de las funciones básicas de la programación, los frameworks ya vienen desarrollados de manera tal que el programador escriba el menor código posible, lo cual hace la programación mas fácil que antes. Así que, ya puedes empezar a crear un formulario sencillo y hacer las validaciones como email, password, url, etc.

Artículos relacionados