Saltar al contenido principal

Validación

La validación en Laravel permite asegurar que los datos enviados por el cliente cumplan con reglas definidas antes de ser procesados o almacenados en la base de datos. Esto protege la integridad de la información y previene errores o vulnerabilidades.

Validación en controladores

Laravel ofrece el método $request->validate() para validar los datos directamente en los controladores:

use Illuminate\Http\Request;

public function store(Request $request)
{
$validated = $request->validate([
'nombre' => 'required|string|max:255',
'email' => 'required|email|unique:usuarios,email',
'password' => 'required|min:6'
]);

$usuario = Usuario::create($validated);
return response()->json($usuario, 201);
}

Si la validación falla, Laravel devuelve automáticamente una respuesta JSON (en APIs) o redirige con errores en aplicaciones web.

Form Request para validación avanzada

Se pueden crear clases de Form Request para centralizar la validación:

php artisan make:request StoreUsuarioRequest

Ejemplo de regla de validación en la clase generada:

public function rules()
{
return [
'nombre' => 'required|string|max:255',
'email' => 'required|email|unique:usuarios,email',
'password' => 'required|min:6'
];
}

En el controlador, se utiliza la clase en lugar de $request:

public function store(StoreUsuarioRequest $request)
{
$usuario = Usuario::create($request->validated());
return response()->json($usuario, 201);
}

Mensajes personalizados

Se pueden definir mensajes de error personalizados en la clase Form Request:

public function messages()
{
return [
'nombre.required' => 'El nombre es obligatorio',
'email.email' => 'Debe ingresar un correo válido'
];
}

Buenas prácticas y convenciones

  • Validar siempre los datos recibidos antes de procesarlos o guardarlos.
  • Usar $request->validate() para reglas simples y Form Requests para validaciones complejas o reutilizables.
  • Definir reglas claras y mensajes personalizados para mejorar la experiencia del usuario.
  • Mantener la lógica de validación separada de la lógica de negocio.
  • Usar tipos de datos y formatos correctos para campos sensibles (email, fechas, contraseñas).