> Faqs > Personalizar los mensajes de error de las validaciones de Laravel

Personalizar los mensajes de error de las validaciones de Laravel

Quisiera saber cómo se personalizan los mensajes de error del sistema de validación de Laravel.

A veces los mensajes de validación son un poco genéricos y necesitaría ajustarlos a las necesidades de la aplicación y del cliente.

Respuestas

Para personalizar los mensajes de error de Laravel tienes dos alternativas. La primera es un poco más genérica, ya que personaliza un mensaje a través de los archivos de la traducción, language files de Laravel, que encuentras en la carpeta "resources/lang". La segunda permite personalizar los mensajes para un validación en concreto.

Personalización de mensajes de error de validación a través de los archivos de traducción: En los ficheros de idioma hay uno que se llama "validation" En él aparecen todos los mensajes, para cada regla de validación.

Por ejemplo te aparece algo como esto:

before' => 'El campo :attribute debe ser una fecha anterior a :date.',

Puedes cambiar la regla por la que te interese.

Además puedes ser un poco más preciso y especificar mensajes específicos para nombres de campos, en el array "Custom Validation Language Lines". En ese campo puedes colocar mensajes para reglas cuando son aplicadas en campos concretos de formulario.

'custom' => [
    'nombre_del_campo' => [
        'nombre_de_regla_validacion' => 'El mensaje personalizado',
    ],
    'telefono_alternativo' => [
        'regex' => 'El teléfono alternativo opcional, debe tener el formato (+xx) xxxxxxxxx'
    ]
],

Puedes saber más sobre las traducciones de mensajes de Laravel en una FAQ antigua: Cómo traducir al español los mensajes de validación de Laravel

Personalizar los mensajes de error al invocar la validación: Esto se hace mediante el método que lanza la validación. Ya sea $request->validate() o bien Validator::make().

Después del parámetro de las reglas de validación podemos indicar un segundo parámetro que sirve para definir los mensajes.

$rules = [
    'name' => 'required|max:100',
];
$customMessages = [
    'required' => 'Cuidado!! el campo :attribute no se puede dejar vacío',
];
$validatedData = $request->validate($rules, $customMessages);

Además, puedes indicar los mensajes específicos para cada campo. con una notación como esta: (nombre_campo.nombre_regla)

$rules = [
    'name' => 'required|max:100',
];
$customMessages = [
    'name.required' => 'Cuidado!! el campo del nombre no se admite vacío',
];
$validatedData = $request->validate($rules, $customMessages);
Miguel Angel
3295 146 215 17

Hola Julian

Aunque no soy ningun experto (ni mucho menos) en la materia te paso un enlace que espero que te sirva de ayuda

https://laravel.com/docs/5.1/validation#custom-error-messages

Un saludo

David
95 4 11