Skip to content

Commit

Permalink
Validation::extend() does not return bool (#42)
Browse files Browse the repository at this point in the history
* Reviewed README
* Reviewed Validator::extend() return
* Fixed styling
* Added Validator::replacer()

---------

Co-authored-by: danielebarbaro <danielebarbaro@users.noreply.github.com>
  • Loading branch information
danielebarbaro and danielebarbaro authored Jan 28, 2025
1 parent e470691 commit a9e6034
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 12 deletions.
44 changes: 43 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Laravel VAT EU VALIDATOR
laravel-vat-eu-validator is a package inspired from [vat.php](https://github.com/dannyvankooten/vat.php) to validate a VAT number for businesses based in Europe.

#### For Laravel 5,6,7 use tag 0.5.4
#### For Laravel 7,8,9 use tag 1.20
#### For Laravel 7,8,9,10,11 use tag 1.20

## Installation

Expand Down Expand Up @@ -94,6 +94,48 @@ class Controller {
}
```

or

```php
use Illuminate\Http\Request;
use Danielebarbaro\LaravelVatEuValidator\Rules;

class Controller {

public function foo(Request $request)
{
$request->validate([
'bar_field' => [
new \Danielebarbaro\LaravelVatEuValidator\Rules\VatNumber(),
new \Danielebarbaro\LaravelVatEuValidator\Rules\VatNumberExist(),
new \Danielebarbaro\LaravelVatEuValidator\Rules\VatNumberFormat(),
],
]);
}
}
```

or

```php
use Illuminate\Http\Request;
use Danielebarbaro\LaravelVatEuValidator\Rules;

class Controller {

public function foo(Request $request)
{
$request->validate([
'bar_field' => [
'vat_number',
'vat_number_format',
'vat_number_exist',
],
]);
}
}
```

### Translations
Most of the displayed strings are defined in the `vatEuValidator::validation` translation files. The package ships with a few supported locales, but if yours is not yet included we would greatly appreciate a PR.

Expand Down
76 changes: 65 additions & 11 deletions src/VatValidatorServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,31 +19,85 @@ public function boot(): void
/**
* Register the "vat_number" validation rule.
*/
Validator::extend('vat_number', static function ($attribute, $value, $parameters, $validator): void {
$rule = new VatNumber();
$rule->validate($attribute, $value, static fn (?string $message = null): null => null);
Validator::extend(
'vat_number',
static function ($attribute, $value, $parameters, $validator): bool {
$passed = true;
$rule = new VatNumber();

$rule->validate(
$attribute,
$value,
static function (?string $message = null) use (&$passed): void {
$passed = false;
}
);

return $passed;
}
);

Validator::replacer('vat_number', function ($message, $attribute, $rule, $parameters) {
return __('laravelVatEuValidator::validation.vat_number', ['attribute' => $attribute]);
});

/**
* Register the "vat_number_exist" validation rule.
*/
Validator::extend('vat_number_exist', static function ($attribute, $value, $parameters, $validator): void {
$rule = new VatNumberExist();
$rule->validate($attribute, $value, static fn (?string $message = null): null => null);
Validator::extend(
'vat_number_exist',
static function ($attribute, $value, $parameters, $validator): bool {
$passed = true;
$rule = new VatNumberExist();

$rule->validate(
$attribute,
$value,
static function (?string $message = null) use (&$passed): void {
$passed = false;
}
);

return $passed;
}
);

Validator::replacer('vat_number_exist', function ($message, $attribute, $rule, $parameters) {
return __('laravelVatEuValidator::validation.vat_number_exist', ['attribute' => $attribute]);
});

/**
* Register the "vat_number_format" validation rule.
*/
Validator::extend('vat_number_format', static function ($attribute, $value, $parameters, $validator): void {
$rule = new VatNumberFormat();
$rule->validate($attribute, $value, static fn (?string $message = null): null => null);
Validator::extend(
'vat_number_format',
static function ($attribute, $value, $parameters, $validator): bool {
$passed = true;
$rule = new VatNumberFormat();

$rule->validate(
$attribute,
$value,
static function (?string $message = null) use (&$passed): void {
$passed = false;
}
);

return $passed;
}
);

Validator::replacer('vat_number_format', function ($message, $attribute, $rule, $parameters) {
return __('laravelVatEuValidator::validation.vat_number_format', ['attribute' => $attribute]);
});

$this->loadTranslationsFrom(realpath(__DIR__ . '/..').'/resources/lang', 'laravelVatEuValidator');
$this->loadTranslationsFrom(
__DIR__.'/../resources/lang',
'laravelVatEuValidator'
);

$this->publishes([
realpath(realpath(__DIR__ . '/..').'/resources/lang') => $this->app->langPath('vendor/laravelVatEuValidator'),
__DIR__.'/../resources/lang' => $this->app->langPath('vendor/laravelVatEuValidator'),
], 'laravel-vat-eu-validator-lang');
}

Expand Down

0 comments on commit a9e6034

Please sign in to comment.