joepc74/laravel-spanish-validator
Laravel package that provides Spanish-language validation messages for Laravel’s validator, helping you localize form errors quickly. Drop in, configure the locale, and use standard Laravel validation rules with Spanish responses.
Installation
composer require joepc74/laravel-spanish-validator
Publish the config (if needed):
php artisan vendor:publish --provider="Joepc74\SpanishValidator\SpanishValidatorServiceProvider"
Basic Usage Validate a Spanish NIF (Tax ID):
use Joepc74\SpanishValidator\Facades\SpanishValidator;
$isValid = SpanishValidator::validateNIF('12345678A');
First Use Case Add validation rules to a Laravel form request:
use Illuminate\Validation\Rule;
public function rules()
{
return [
'nif' => ['required', Rule::unique('users')->ignore($this->user),
function ($attribute, $value, $fail) {
if (!SpanishValidator::validateNIF($value)) {
$fail('El NIF no es válido.');
}
}]
];
}
Form Requests Reuse the validator in multiple requests:
public function rules()
{
return [
'nie' => ['required', function ($value) {
return SpanishValidator::validateNIE($value);
}],
'cif' => ['required', function ($value) {
return SpanishValidator::validateCIF($value);
}],
];
}
API Responses Return structured validation errors:
try {
SpanishValidator::validateIBAN($request->iban);
} catch (\InvalidArgumentException $e) {
return response()->json(['error' => 'IBAN inválido'], 422);
}
Custom Rules
Extend Laravel’s Rule class for reusable validation:
use Joepc74\SpanishValidator\Facades\SpanishValidator;
class ValidSpanishNSS extends Rule
{
public function passes($attribute, $value)
{
return SpanishValidator::validateNSS($value);
}
}
trans() helper for multilingual error messages.$validator = Mockery::mock('alias:SpanishValidator');
$validator->shouldReceive('validateNIF')->once()->andReturn(true);
Case Sensitivity
'12345678A' is valid, '12345678a' may fail).$nif = strtoupper($request->nif);
IBAN Validation Quirks
SpanishValidator::validateIBAN($iban, false) to skip strict checks.Phone Number Formats
+ prefixes.$cleanPhone = preg_replace('/[^0-9]/', '', $request->phone);
ABC1234567 or 12345678 (legal entities vs. individuals).SpanishValidator::validatePostalCode(); Spanish codes are 5 digits (e.g., 28001).Custom Validation Logic Override the service provider to add business rules:
SpanishValidator::extend('customNIF', function ($nif) {
return SpanishValidator::validateNIF($nif) && str_starts_with($nif, '123');
});
Configuration
Modify published config (config/spanish-validator.php) to adjust:
X, Y, Z for foreigners).Performance For bulk validation (e.g., CSV imports), cache results:
$cacheKey = 'nif_'.$nif;
if (!cache()->has($cacheKey)) {
cache()->put($cacheKey, SpanishValidator::validateNIF($nif), 60);
}
How can I help you explore Laravel packages today?