Laravel (illuminate) Components - Validation

Algunas personas no podemos dormir sin saber como funcionan las cosas de fondo, nos puede la curiosidad y deseamos destapar todo, por que a lo mejor desarmar la radio cuando chicos no fue suficiente.

Todos conocemos muy bien el gran potencial de Laravel, pero se nos hace innecesariamente grande para algunos proyectos simples, librerias, sdks, etc, y aun así no queremos separarnos de aquello que Laravel hace muy bien.

En este capitulo veremos como usar el componente Validation de Laravel, illuminate/validation, de manera individual.

Ya veremos que simple!

Lo primero que debemos hacer es instalarlo con composer

composer require illuminate/validation

Los ejemplos de este articulo se han creado con la versión 5.8

Vamos a crear un ejemplo de validación simple en un solo archivo, ya queda en vuestra manos el mejorarlo, llevarlo a facade o una clase que se encargue de las validaciones.

use Illuminate\Filesystem\Filesystem;
use Illuminate\Translation\FileLoader;
use Illuminate\Translation\Translator;
use Illuminate\Validation;

require_once 'vendor/autoload.php';

$fileLoader = new FileLoader(new Filesystem, 'lang');

$validation = new Validation\Factory(
    new Translator($fileLoader, 'en')
);

En las primeras lineas tenemos algunas dependencias de otros componentes Filesystem, Translation no hay nada de que preocuparse, ya vienen incluidas en la instalación del componente Validation.

Luego tenemos nuestro FileLoader que se encargara de cargar el archivo de las traducciones para las diferentes reglas de validación, al cual se le pasa una instancia de FileSystem y la ruta de nuestra carpeta con las traducciones lang, para simplificar mas las cosas la podemos copiar directamente desde laravel Validation Language Lines siguiendo la misma estructura.

 - lang
    └─ en
       └─ validation.php

Luego tenemos la creación de nuestro validador el cual espera una instancia de Translation al cual le pasamos nuestro FileLoader y el lenguaje local, en este caso 'en'.

Listo ya tenemos nuestro validador!!

Ahora pongamos a prueba, haciendo uso de las reglas Validation Rules

$data = [ 'email' => 'test@validation.com'];

$rules = [
    'email' => 'required|email|max:55'
];

Cuando tenemos la data que vamos a validar y las reglas podemos pasarlo por el validador.

$validator = $validation->make($data, $rules);

Una vez en al validador podemos hacer uso de los diferentes métodos que tiene para manejar como mejor nos convenga los errores de validación.

$validator->validate() Valida los datos pasados arrojando un ValidationException en caso de no pasar la validación.

$validator->fails() Retorna true si los datos fallan la validación

$validator->errors() Retorna un array con los mensajes de validación.

Espero os sea de ayuda! Alguna duda o sugerencia la podéis dejarla como comentario o hacerme una mencion en twitter @millancore