Crear función de validación propia en Laravel 5

Laravel 5 viene con un fantástico sistema de validación de datos con un montón de reglas de validación predefinidas que podemos ver en https://laravel.com/docs/5.0/validation#available-validation-rules pero lo normal es que necesitemos crear nuestras propias reglas de validación para ciertos campos. En mi caso surgió la necesidad de validar que las contraseñas cumplieran ciertas reglas (que tengan al menos una mayúscula, minúscula, número y una longitud entre 6 y 10 caracteres). Para ello en el fichero app\Providers\AppServiceProvaider.php, dentro de la función boot me cree una extensión del validador de la siguiente forma:

namespace MiProyecto\Providers;
use Illuminate\Support\ServiceProvider;

use Validator; // añadir esta línea, importante

class AppServiceProvider extends ServiceProvider {
	/**
	 * Bootstrap any application services.
	 *
	 * @return void
	 */
	public function boot()
	{
		// la validación que queremos crear
		Validator::extend('contrasena_segura', function($attribute, $value, $parameters, $validator) {
			return (preg_match('/(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9\s]{6,10})$/', $value) == 1)?true:false;
		});
	}

	

Luego tenemos que definir el mensaje de error que se va a mostrar en caso de error, lo cual podremos hacer en el fichero validation.php del idioma que estemos usando (resources\lang\es\validation.php en mi caso):

  'contrasena_segura'  => 'La contraseña debe tener entre 6 y 10 caracteres, y contener alguna mayúscula, minúscula y número',

Y ya lo podremos usar como cualquier otro tipo de validación:

$validator = Validator::make($request->input(), [
	'name' => 'required|max:255',
	'email' => 'required|email|max:255|unique:users,email,'.$request->input('id'),
	'password' => 'required|contrasena_segura',
	'role'	=> 'required|in:superadmin,admin,user'
]);	
Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.