slashlab/numerik-laravel
Composer 安装命令:
composer require slashlab/numerik-laravel
包简介
Laravel validation rules for Polish identification numbers (PESEL, NIP, REGON, KRS, ID card, passport, VAT-EU, NRB, IBAN) — powered by slashlab/numerik.
关键字:
README 文档
README
Laravel validation rules for Polish identification numbers — PESEL, NIP, REGON, KRS, ID card, passport, VAT-EU, NRB, and IBAN. Powered by slashlab/numerik.
Requirements
- PHP 8.3+
- Laravel 12 or 13
Installation
composer require slashlab/numerik-laravel
The service provider is auto-discovered — no manual registration needed.
Usage
Validation rules
Use the rules in form requests or Validator::make() calls:
// Personal use SlashLab\NumerikLaravel\Rules\PeselRule; use SlashLab\NumerikLaravel\Rules\IdCardRule; use SlashLab\NumerikLaravel\Rules\PassportRule; // Tax & Business use SlashLab\NumerikLaravel\Rules\NipRule; use SlashLab\NumerikLaravel\Rules\VatEuRule; use SlashLab\NumerikLaravel\Rules\RegonRule; use SlashLab\NumerikLaravel\Rules\KrsRule; // Banking use SlashLab\NumerikLaravel\Rules\NrbRule; use SlashLab\NumerikLaravel\Rules\IbanRule; public function rules(): array { return [ 'pesel' => ['required', new PeselRule()], 'id_card' => ['required', new IdCardRule()], 'passport' => ['required', new PassportRule()], 'nip' => ['required', new NipRule()], 'vat_eu' => ['required', new VatEuRule()], 'regon' => ['required', new RegonRule()], 'krs' => ['required', new KrsRule()], 'nrb' => ['required', new NrbRule()], 'iban' => ['required', new IbanRule()], ]; }
Strict mode
All rules accept an optional strict parameter (default true). In strict mode, PESELs with future birth dates or all-identical digits are rejected:
new PeselRule(strict: false)
Validation messages
Class-based rules return a specific message for each failure reason — for example, a NIP with a wrong checksum digit returns a different message than one with an invalid length.
Error messages use the field label registered in validation.attributes when one is found, matching the behaviour of Laravel's built-in rules. If no label is registered, the field name is humanised (underscores replaced with spaces, first letter capitalised).
The package ships with English (en) and Polish (pl) translations. To publish and customise them:
php artisan vendor:publish --tag=numerik-lang
PeselRule constraints
PeselRule accepts additional parameters for stricter identity checks:
new PeselRule( gender: Gender::Female, bornBefore: new DateTimeImmutable('2000-01-01'), bornAfter: new DateTimeImmutable('1980-01-01'), )
All parameters are optional and can be combined freely.
String-based rules
Rules are also available as strings via the service provider:
// Personal 'pesel' => ['required', 'pesel'], 'id_card' => ['required', 'id_card'], 'passport' => ['required', 'passport'], // Tax & Business 'nip' => ['required', 'nip'], 'vat_eu' => ['required', 'vat_eu'], 'regon' => ['required', 'regon'], 'krs' => ['required', 'krs'], // Banking 'nrb' => ['required', 'nrb'], 'iban' => ['required', 'iban'],
String-based rules always return a generic message regardless of the failure reason. Use the class-based rules when specific messages matter.
Changelog
See CHANGELOG.md.
Contributing
See CONTRIBUTING.md.
Security
See SECURITY.md.
License
MIT — see LICENSE.
If this saved you time → ☕ Buy me a coffee
统计信息
- 总下载量: 79
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-04-27