En este videotutorial aprenderemos a traducir los mensajes de error incluidos en el sistema de validación de Laravel, además veremos otra forma de mostrar los mensajes de error en nuestras vistas de Blade.
Mira el código en GitHub: actual, resultado, comparación.
Publicar los mensajes en Laravel 10 o superior
Para publicar los mensajes de error debemos ejecutar el siguiente comando en la terminal:
php artisan lang:publish
Este comando creará el directorio lang
dentro de nuestra aplicación.
Versiones anteriores del framework Laravel incluyen esta carpeta por defecto dentro del directorio resources
Agregar las traducciones al español en Laravel 10
Para crear una traducción de los mensajes de error simplemente debemos crear un directorio «es» (para español en nuestro caso) dentro del directorio lang
Cada una de las llaves dentro de los archivos de idioma corresponden al nombre de una regla de validación y cada valor es el mensaje de error que se va a mostrar:
<?php return [ 'accepted' => 'El campo :attribute debe ser aceptado.' // Otras reglas de validación y valores aqui debajo. ];
El valor de :attribute
será reemplazado por el nombre del campo cuando ocurra un error.
Puedes usar el siguiente enlace para ver y descargar todos los mensajes y traducciones al español que usé en esta lección.
También existen componentes como Laravel-Lang que te permiten traducir los errores de validación.
Para indicarle a Laravel que queremos que el idioma de nuestra aplicación sea español debemos dirigirnos a config/app.php
y cambiar el valor de la propiedad locale
:
<?php return [ // Otros valores de configuración aqui 'locale' => 'es' // Otros valores de configuración aqui ];
Para indicar que también queremos traducir los nombres de los campos debemos agregar estos al arreglo attributes
dentro de nuestro archivo de idioma (lang/es/validation.php
):
<?php return [ // Otras llaves y valores aqui 'attributes' => [ 'title' => 'título', 'content' => 'contenido' ], ];
Mostras mensajes traducidos en Blade
Para usar estas traducciones directamente en las plantilla de Blade debemos hacer uso de la directiva @lang
:
<label for="title" class="field-label">@lang('validation.attributes.title')</label>
Mostrar mensajes de validación en nuestra vista con la variable $errors
Para validar si tenemos un error en nuestra vista podemos llamar al método any()
:
@if ($errors->any()) <h4>El formulario contiene errores</h4> @endif
Podemos iterar todos los errores de validación llamando al método all()
:
<ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul>
La variable $errors
siempre está presente en la vista.
Esta variable es una instancia de la clase Illuminate\Support\MessageBag
.
También podemos usar: $errors->has('campo')
para ver si un campo tiene errores de validación o $errors->first('campo')
para obtener el primer mensaje de error de un campo, por ejemplo:
<!-- resources/views/add-note.blade.php --> <input type="text" name="title" id="title" class="field-input {{ $errors->has('title') ? 'field-error' : '' }}"> @if ($errors->has('title')) <span class="error-message">{{ $errors->first('title') }}</span> @endif
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Validación de datos con Laravel 10 o superior Lección siguiente Controladores en Laravel 10 o superior