gabrieldevro / laravel-romanian-rules
Laravel validation rules for Romanian data: CNP, CUI/CIF, IBAN and phone numbers.
Package info
github.com/Gabrieldevro/laravel-romanian-rules
pkg:composer/gabrieldevro/laravel-romanian-rules
Requires
- php: ^8.2
- illuminate/support: ^12.0
- illuminate/validation: ^12.0
Requires (Dev)
- orchestra/testbench: ^10.0
- phpunit/phpunit: ^11.5|^12.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Reguli de validare Laravel pentru date românești: CNP, CUI/CIF, IBAN și număr de telefon.
Laravel validation rules for Romanian personal codes, company tax IDs, IBANs and phone numbers.
De ce
În aproape orice magazin online sau aplicație din România trebuie validate CNP-uri, coduri fiscale pentru facturare pe firmă, IBAN-uri și numere de telefon. Regulile de tip regex lasă să treacă date greșite. Pachetul verifică cifrele de control oficiale:
| Regulă | Ce verifică |
|---|---|
cnp |
13 cifre, sex/secol, dată de naștere reală (inclusiv ani bisecți), cod de județ valid, cifra de control (cheia 279146358279) |
cui |
2–10 cifre, cu sau fără prefixul RO, cifra de control (cheia 753217532) |
ro_iban |
format RO + 22 de caractere și verificarea mod 97 (ISO 13616) |
ro_phone |
fix sau mobil, acceptă 07…, +40…, 0040…, cu spații, puncte și cratime |
ro_mobile |
doar numere de mobil (07…) |
Instalare
composer require gabrieldevro/laravel-romanian-rules
Service provider-ul se înregistrează automat.
Utilizare
use Gabrieldev\RomanianRules\Rules\{Cnp, Cui, RoIban, RoPhone}; $request->validate([ 'cnp' => ['required', new Cnp], 'cui' => ['nullable', new Cui], // „RO45845765” sau „45845765” 'iban' => ['required', new RoIban], // spațiile sunt ignorate 'telefon' => ['required', RoPhone::mobile()], ]); // sau ca text $request->validate([ 'cnp' => 'required|cnp', 'cui' => 'nullable|cui', 'iban' => 'required|ro_iban', 'telefon' => 'required|ro_phone', ]);
Normalizarea telefonului
use Gabrieldev\RomanianRules\Validators; Validators::normalizePhone('0743 543 100'); // "+40743543100" Validators::normalizePhone('0040743543100'); // "+40743543100" Validators::normalizePhone('123'); // null
Algoritmii pot fi folosiți și direct, fără Laravel: Validators::cnp(), Validators::cui(), Validators::iban(), Validators::phone().
Mesaje de eroare
Mesajele vin în română și engleză. Le poți personaliza după ce le publici:
php artisan vendor:publish --tag=romanian-rules-lang
Teste
composer test
Testele acoperă CNP-uri valide și invalide (dată imposibilă, județ inexistent, cifră de control greșită), CUI cu și fără RO, IBAN-uri valide sau străine și normalizarea telefonului, pe PHP 8.2–8.4 și Laravel 12.
Făcut de Gabriel Dev: magazine online, aplicații Laravel și integrări pentru piața din România.