Przejdź do głównej zawartości

Integracja z Laravel

slashlab/numerik-laravel dodaje walidatory Numerika jako reguły walidacji Laravel. Obsługuje zarówno składnię klasową jak i łańcuchową i jest automatycznie wykrywany — nie wymaga ręcznej rejestracji.

  • PHP 8.3 lub nowszy
  • Laravel 11, 12 lub 13
  1. Dodaj pakiet

    Okno terminala
    composer require slashlab/numerik-laravel
  2. Brak konfiguracji

    Biblioteka jest automatycznie wykrywana — nie ma pliku konfiguracyjnego do opublikowania ani kroku inicjalizacji.

use SlashLab\NumerikLaravel\Rules\PeselRule;
use SlashLab\NumerikLaravel\Rules\NipRule;
use SlashLab\NumerikLaravel\Rules\RegonRule;
use SlashLab\NumerikLaravel\Rules\KrsRule;
public function rules(): array
{
return [
'pesel' => ['required', new PeselRule()],
'nip' => ['required', new NipRule()],
'regon' => ['required', new RegonRule()],
'krs' => ['required', new KrsRule()],
];
}

Reguły klasowe zwracają osobny komunikat dla każdego powodu błędu. NIP z nieprawidłową sumą kontrolną dostanie inny komunikat niż NIP z nieprawidłową długością.

Komunikaty rozpoznają etykietę pola z validation.attributes, jeśli jest zdefiniowana — zachowują się jak wbudowane reguły Laravel. Jeśli etykieta nie jest zarejestrowana, nazwa pola jest automatycznie formatowana: podkreślenia zamieniają się na spacje, pierwsza litera staje się wielka.

lang/en/validation.php
'attributes' => [
'nip_number' => 'NIP',
],

Pakiet zawiera tłumaczenia na angielski (en) i polski (pl). Aby opublikować i dostosować komunikaty:

Okno terminala
php artisan vendor:publish --tag=numerik-lang

Pliki tłumaczeń trafią do lang/vendor/numerik/ — edytuj je, żeby nadpisać dowolny komunikat.

Wszystkie reguły przyjmują opcjonalny parametr strict (domyślnie true). W trybie ścisłym poza walidacją strukturalną i sumą kontrolną stosowane są dodatkowe sprawdzenia semantyczne.

Dla numeru PESEL tryb ścisły odrzuca numery z datą urodzenia w przyszłości lub wszystkimi identycznymi cyframi:

// Tryb ścisły włączony (domyślnie) — odrzuca daty przyszłe i podejrzane wzorce
new PeselRule()
// Tryb ścisły wyłączony — stosowane są tylko sprawdzenia strukturalne i sumy kontrolnej
new PeselRule(strict: false)

Ten sam parametr jest akceptowany przez NipRule, RegonRule i KrsRule.

PeselRule obsługuje dodatkowe ograniczenia weryfikowane po przejściu podstawowej walidacji.

Odrzucaj numery, które nie odpowiadają oczekiwanej płci:

use SlashLab\Numerik\Enums\Gender;
new PeselRule(gender: Gender::Male)
new PeselRule(gender: Gender::Female)

Odrzucaj numery, których zakodowana data urodzenia wykracza poza podany zakres:

new PeselRule(bornBefore: new DateTimeImmutable('2000-01-01'))
new PeselRule(bornAfter: new DateTimeImmutable('1980-12-31'))

Ograniczenia można łączyć:

new PeselRule(
gender: Gender::Female,
bornAfter: new DateTimeImmutable('1990-01-01'),
bornBefore: new DateTimeImmutable('2005-01-01'),
)
If this saved you time → ☕ Buy me a coffee