allsetlu / zip-code-validator
国际邮政编码验证的约束类
V2.0.2
2021-11-03 15:48 UTC
Requires
- php: >=5.6.0
- symfony/validator: >=2.1
Requires (Dev)
- phpunit/phpunit: ^5
README
这个分支仅用于添加新伙伴和修复其他问题。
安装
本包使用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的股票NotNull
或NotBlank
约束,并附加到ZipCode
。
/** * @ZipCode(getter="getCountry") * @NotBlank */ protected $zipCode;
不区分大小写的邮政编码匹配
如果您想要不区分大小写地匹配邮政编码,您必须通过构造函数传递一个值为false
的caseSensitiveCheck
参数。
$constraint = new ZipCode([ 'iso' => 'GB', 'caseSensitiveCheck' => false ]);
默认情况下,库使用区分大小写的邮政编码匹配。
复制/许可
此存储库在MIT许可证(MIT)下分发。您可以在LICENSE文件中找到整个许可文本。