laravel-romanian-rules maintained by gabrieldevro
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.