克雷尤/nip-validator-bundle

使用可配置的验证约束验证NIP/TIN号码

安装次数: 179,982

依赖: 0

建议: 0

安全: 0

星级: 3

关注者: 1

分支: 2

开放问题: 0

类型:symfony-bundle

v2.1.0 2023-03-23 12:14 UTC

This package is auto-updated.

Last update: 2024-09-23 15:46:07 UTC


README

Latest Stable Version Build Status

使用可配置的验证约束验证税务识别号码。

要求

  • 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());
    }
}

模式验证

默认情况下,唯一接受的格式是不带前缀和破折号的字符字符串。

破折号的使用

如果您希望允许或要求使用破折号,请使用allowDashesrequireDashes选项。

<?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

前缀的使用

如果您希望允许或要求使用前缀,请使用allowPrefixrequirePrefix选项。
此外,您还可以使用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;
}

allowPrefixrequirePrefix选项默认都设置为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,将任何其他值设置为它将忽略allowDashesrequireDashesallowPrefixrequirePrefix选项。

校验和验证

默认情况下,正在验证校验和。如果您希望禁用此功能,请将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)。有关更多信息,请参阅许可证文件