allsetlu/zip-code-validator

国际邮政编码验证的约束类

V2.0.2 2021-11-03 15:48 UTC

README

这个分支仅用于添加新伙伴和修复其他问题。

Build Status Downloads Latest stable version PHP from Packagist GitHub stars MIT licensed

安装

本包使用Composer,请访问Composer网站获取更多信息。

以下命令将安装zip-code-validator到您的项目中。它还会在您的composer.json中添加一个条目,并更新composer.lock

$ composer require allsetlu/zip-code-validator

本包遵循PSR-4约定命名其类,这意味着您可以轻松地将zip-code-validator类加载集成到自己的自动加载器中。

接下来做什么?

为了验证邮政编码,您需要创建一个由本包提供的ZipCode新实例,并将其设置为表单字段的约束,例如

<?php
//...
$form = $this->createFormBuilder($address)
            ->add('zipcode', TextType::class, array(
                'constraints' => array(
                    new ZipCodeValidator\Constraints\ZipCode(array(
                        'iso' => 'DE'
                    ))
                )
            ))
            ->add('save', SubmitType::class, array('label' => 'Create Task'))
            ->getForm();

另一种方法是将约束用作类属性的注解,例如

<?php

use ZipCodeValidator\Constraints\ZipCode;

class Address
{
    /**
     * @ZipCode(iso="DE")
     */
    protected $zipCode;
}

请考虑注入有效的ISO 3166 2位字母国家代码(例如DE,US,FR)!

注意:此库验证已知邮政编码正则表达式模式,并不验证邮政编码的存在。

使用getter动态注入国家代码

如果您有一个表单,用户可以在其中选择国家,您可能希望动态验证邮政编码。在这种情况下,您可以使用getter选项。

<?php

use ZipCodeValidator\Constraints\ZipCode;

class Address
{
    /**
     * @ZipCode(getter="getCountry")
     */
    protected $zipCode;

    protected $country;

    public function getCountry()
    {
        return $this->country;
    }
}

要禁用验证器抛出异常,当邮政编码模式对国家不可用时,可以将strict选项设置为FALSE

/**
 * @ZipCode(getter="getCountry", strict=false)
 */
protected $zipCode;

验证器不会验证空字符串和null值。要禁止它们,请使用Symfony的股票NotNullNotBlank约束,并附加到ZipCode

/**
 * @ZipCode(getter="getCountry")
 * @NotBlank 
 */
protected $zipCode;

不区分大小写的邮政编码匹配

如果您想要不区分大小写地匹配邮政编码,您必须通过构造函数传递一个值为falsecaseSensitiveCheck参数。

$constraint = new ZipCode([
    'iso' => 'GB', 
    'caseSensitiveCheck' => false
]);

默认情况下,库使用区分大小写的邮政编码匹配。

复制/许可

此存储库在MIT许可证(MIT)下分发。您可以在LICENSE文件中找到整个许可文本。