sllh / iso-codes-validator
ronanguilloux/isocodes 的 Symfony 验证包装器
v4.2.0
2023-09-19 12:41 UTC
Requires
- php: ^7.4 || ^8.0
- ronanguilloux/isocodes: ^2.3.4
- symfony/translation: ^4.4 || ^5.0
- symfony/validator: ^4.4 || ^5.0
Requires (Dev)
- cweagans/composer-patches: ^1.7
- matthiasnoback/symfony-dependency-injection-test: ^4.2
- sebastian/exporter: ^1.2.0
- symfony/dependency-injection: ^4.4 || ^5.0
- symfony/finder: ^4.4 || ^5.0
- symfony/http-kernel: ^4.4 || ^5.0
- symfony/phpunit-bridge: ^4.4 || ^5.0
Suggests
- symfony/dependency-injection: For Symfony integration as a bundle
- symfony/finder: For Symfony integration as a bundle
- symfony/http-kernel: For Symfony integration as a bundle
Conflicts
- symfony/dependency-injection: <2.7
- symfony/finder: <2.7
- symfony/http-kernel: <2.7
README
本项目是 IsoCodes 项目的 Symfony 验证包装器。
安装
首先,您需要通过 composer 需求此库
$ composer require sllh/iso-codes-validator
之后,您可以像使用其他库一样使用它。
如果您正在使用 Symfony 项目,请阅读以下说明以获得更好的集成。
作为 Symfony 扩展包
如果您项目 未使用 Symfony 全栈,您必须添加以下依赖项
$ composer require symfony/dependency-injection symfony/http-kernel symfony/finder
翻译
如果您希望在此扩展包中使用默认验证器消息翻译,您必须确保您的配置中启用了翻译器。
# app/config/config.yml framework: translator: ~
启用扩展包
// app/AppKernel.php public function registerBundles() { $bundles = array( // ... new SLLH\IsoCodesValidator\Bridge\Symfony\Bundle\SLLHIsoCodesValidatorBundle(), ); }
用法
IsoCodesValidator 基于 Symfony Validator 库。
手动使用
通过使用 Symfony Validation 类创建和使用 IsoCodes 约束
use Symfony\Component\Validator\Validation; use SLLH\IsoCodesValidator\Constraints\Vat; $validator = Validation::createValidator(); $violations = $validator->validateValue('DE123456789', new Vat());
使用注解
使用“约束映射”可以验证对象。通过此类映射,您可以将约束放置在类的属性和对象上。每当验证此类对象时,其属性和方法结果都会与约束进行匹配。
use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; use SLLH\IsoCodesValidator\Constraints as IsoCodesAssert; class Company { /** * @Assert\NotBlank * @IsoCodesAssert\Siret */ private $siret; /** * @Assert\NotBlank * @IsoCodesAssert\Siren */ private $siren; /** * @IsoCodesAssert\Vat */ private $vat; /** * @IsoCodesAssert\ZipCode(country = "FR") */ private $zipCode; public function __construct($siret, $siren, $vat, $zipCode) { $this->siret = $siret; $this->siren = $siren; $this->vat = $vat; $this->zipCode = $zipCode } } $validator = Validation::createValidatorBuilder() ->enableAnnotationMapping() ->getValidator(); $company = new Company('48853781200015', '432167567', 'DE123456789', '59000'); $violations = $validator->validate($company);
约束参考
约束类可以在 src/Constraints 中找到。
除非指定 message
,否则所有内容都将“原样”使用,不带有任何选项。
只有 ZipCode 约束接受一个 country
选项来限制验证(默认为 'all')。
请注意,一些 IsoCodes 类已在 Symfony 验证组件 中实现。您可以选择使用哪个。
如果您认为缺少某个 IsoCodes 类,请随时提交问题或发起 PR。
许可证
本项目采用 MIT 许可证。有关完整的许可证信息,请参阅 LICENSE 文件。
待办事项
- 尝试实现 OrganismeType12NormeB2(可能需要特殊表单类型?)
- 实现和测试 Symfony 的 xml/yaml assert 配置: https://symfony.ac.cn/doc/current/book/validation.html#the-basics-of-validation