克雷尤 / nip-validator-bundle
使用可配置的验证约束验证NIP/TIN号码
Requires
- php: >=8.1
- symfony/validator: >=6.1
Requires (Dev)
- phpunit/phpunit: >=9.5.5
- symfony/phpunit-bridge: >=6.1
README
使用可配置的验证约束验证税务识别号码。
要求
- Symfony验证器 >=6.1
- PHP >=8.1
对于PHP 7.0和Symfony 3.4,请查看v1.x版本。
安装
要下载此包,请使用Composer进行需求
$ composer require kreyu/nip-validator-bundle
用法
与所有Symfony验证约束一样,您可以通过注解
<?php namespace App\Entity; use Kreyu\Bundle\NipValidatorBundle\Validator\Constraints as Assert; class Company { /** * @Assert\Nip() */ private $nip; }
或通过使用属性
<?php namespace App\Entity; use Kreyu\Bundle\NipValidatorBundle\Validator\Constraints as Assert; class Company { #[Assert\Nip] private $nip; }
或通过使用YAML
App\Entity\Company: properties: nip: - Kreyu\Bundle\NipValidatorBundle\Validator\Constraints\Nip: ~
或通过使用XML
<?xml version="1.0" encoding="UTF-8" ?> <constraint-mapping xmlns="https://symfony.ac.cn/schema/dic/constraint-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://symfony.ac.cn/schema/dic/constraint-mapping https://symfony.ac.cn/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd"> <class name="App\Entity\Company"> <property name="nip"> <constraint name="Kreyu\Bundle\NipValidatorBundle\Validator\Constraints\Nip"/> </property> </class> </constraint-mapping>
或通过使用PHP
<?php namespace App\Entity; use Kreyu\Bundle\NipValidatorBundle\Validator\Constraints\Nip; use Symfony\Component\Validator\Mapping\ClassMetadata; class Company { private $nip; public static function loadValidatorMetadata(ClassMetadata $metadata) { $metadata->addPropertyConstraint('nip', new Nip()); } }
模式验证
默认情况下,唯一接受的格式是不带前缀和破折号的字符字符串。
破折号的使用
如果您希望允许或要求使用破折号,请使用allowDashes
和requireDashes
选项。
<?php namespace App\Entity; use Kreyu\Bundle\NipValidatorBundle\Validator\Constraints as Assert; class Company { /** * @Assert\Nip( * allowDashes=true, * requireDashes=true * ) */ private $nip; }
这两个选项默认都设置为false
。
将requireDashes
选项设置为true
会忽略allowDashes
的值,因为没有破折号的数字不再有效。
带有破折号的允许格式如下
XX-XXX-XXX-XX
,例如34-208-769-99
XXX-XXX-XX-XX
,例如342-087-69-99
前缀的使用
如果您希望允许或要求使用前缀,请使用allowPrefix
和requirePrefix
选项。
此外,您还可以使用prefixLength
选项修改前缀的长度。
<?php namespace App\Entity; use Kreyu\Bundle\NipValidatorBundle\Validator\Constraints as Assert; class Company { /** * @Assert\Nip( * allowPrefix=true, * requirePrefix=true, * prefixLength=2 * ) */ private $nip; }
allowPrefix
和requirePrefix
选项默认都设置为false
,而prefixLength
默认为2
。
前缀后不加空格
PPXXXXXXXXXX
,例如PL3420876999
自定义模式违规消息
您可以使用patternMessage
选项自定义模式违规消息
<?php namespace App\Entity; use Kreyu\Bundle\NipValidatorBundle\Validator\Constraints as Assert; class Company { /** * @Assert\Nip( * patternMessage="This is not a valid NIP number." * ) */ private $nip; }
您可以在该消息中使用以下参数
自定义正则表达式的使用
如果默认功能不符合您的需求,请考虑使用pattern
选项
<?php namespace App\Entity; use Kreyu\Bundle\NipValidatorBundle\Validator\Constraints as Assert; class Company { /** * @Assert\Nip( * pattern="/^(\d{2}.\d{3}.\d{3}.\d{2})$/" * ) */ private $nip; }
默认情况下,此选项等于null
,将任何其他值设置为它将忽略allowDashes
、requireDashes
、allowPrefix
和requirePrefix
选项。
校验和验证
默认情况下,正在验证校验和。如果您希望禁用此功能,请将checksum
选项设置为false
<?php namespace App\Entity; use Kreyu\Bundle\NipValidatorBundle\Validator\Constraints as Assert; class Company { /** * @Assert\Nip( * checksum=false * ) */ private $nip; }
自定义校验和违规消息
您可以使用checksumMessage
选项自定义校验和违规消息
<?php namespace App\Entity; use Kreyu\Bundle\NipValidatorBundle\Validator\Constraints as Assert; class Company { /** * @Assert\Nip( * checksumMessage="This is not a valid NIP number." * ) */ private $nip; }
您可以在该消息中使用以下参数
使用可调用的正常化器
您可以使用normalizer
选项定义在验证之前应用于值的PHP可调用
<?php namespace App\Entity; use Kreyu\Bundle\NipValidatorBundle\Validator\Constraints as Assert; class Company { /** * @Assert\Nip( * normalizer="trim" * ) */ private $nip; }
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件