承接 slashlab/numerik-laravel 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

Tests PHPStan Latest Version PHP Version License CodeRabbit

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

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-27

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固