Validacion
Laravel incluye un sistema de validacion robusto y flexible que permite verificar los datos de entrada con decenas de reglas predefinidas y la posibilidad de crear reglas personalizadas.
Validacion basica
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'age' => 'required|integer|between:18,99',
'avatar' => 'nullable|image|max:2048',
'tags' => 'array|max:5',
'tags.*' => 'string|exists:tags,slug',
]);
// $validated solo contiene los datos que pasaron la validacion
Post::create($validated);
}
Form Request (recomendado)
class UpdateProfileRequest extends FormRequest
{
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'email', Rule::unique('users')->ignore($this->user())],
'bio' => ['nullable', 'string', 'max:1000'],
];
}
public function messages(): array
{
return [
'name.required' => 'El nombre es obligatorio.',
'email.unique' => 'Este email ya esta en uso.',
];
}
}
Reglas personalizadas
php artisan make:rule Uppercase
class Uppercase implements ValidationRule
{
public function validate(string $attribute, mixed $value, Closure $fail): void
{
if (strtoupper($value) !== $value) {
$fail('El campo :attribute debe estar en mayusculas.');
}
}
}
Laravel incluye mas de 90 reglas de validacion predefinidas. Los errores de validacion se manejan automaticamente, redirigiendo al formulario con los mensajes de error y los datos antiguos.