barbieswimcrew/zip-code-validator

国际邮编验证的约束类

v3.1.2 2024-07-23 06:34 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 barbieswimcrew/zip-code-validator

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

接下来是什么?

要验证邮编,您需要使用此包提供的ZipCode类实例化一个新的对象,并将其设置为表单字段的约束,例如

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

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

<?php

use ZipCodeValidator\Constraints\ZipCode;

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

您还可以将其用作PHP8属性,通过选项数组传递参数,例如

<?php

use ZipCodeValidator\Constraints\ZipCode;

class Address
{
    #[ZipCode(['iso'=>'DE'])
    protected $zipCode;
}

请考虑注入有效的ISO 3166两位字母国家代码(例如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;

不区分大小写的邮编匹配

如果您想以不区分大小写的方式匹配邮编,您必须通过构造函数传递一个带有false值的caseSensitiveCheck参数。

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

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

复制/许可证

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