barbieswimcrew / zip-code-validator
国际邮编验证的约束类
v3.1.2
2024-07-23 06:34 UTC
Requires
- php: >=8.0
- symfony/validator: >=4.4.40
Requires (Dev)
- phpunit/phpunit: ^9.6 || ^10.5 || ^11.0.3
README
安装
此包使用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的NotNull
或NotBlank
约束,除此外还要使用ZipCode
。
/** * @ZipCode(getter="getCountry") * @NotBlank */ protected $zipCode;
不区分大小写的邮编匹配
如果您想以不区分大小写的方式匹配邮编,您必须通过构造函数传递一个带有false
值的caseSensitiveCheck
参数。
$constraint = new ZipCode([ 'iso' => 'GB', 'caseSensitiveCheck' => false ]);
默认情况下,该库使用区分大小写的邮编匹配。
复制/许可证
此存储库根据MIT许可证(MIT)分发。您可以在LICENSE文件中找到整个许可证文本。