Looking to hire Laravel developers? Try LaraJobs

laravel-romanian-rules maintained by gabrieldevro

Description
Laravel validation rules for Romanian data: CNP, CUI/CIF, IBAN and phone numbers.
Last update
2026/10/21 13:59 (dev-main)
License
Links
Downloads
0
Tags

Comments
comments powered by Disqus

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.