retailcrm / url-validator
RetailCRM URL验证器
v1.1.0
2023-10-05 20:15 UTC
Requires
- php: >=7.3
- ext-json: *
- symfony/validator: ^3 || ^4 || ^5 || ^6
Requires (Dev)
- phpmd/phpmd: ^2.10
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.5.7
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-09-05 22:32:28 UTC
README
RetailCRM URL验证器
此验证器将帮助您使用 symfony/validator
在项目中验证系统URL。
目录
需求
- PHP 7.3及以上版本
- PHP的JSON支持
symfony/validator
安装
按照以下步骤安装库
- 下载并安装 Composer 包管理器。
- 通过执行以下命令从Packagist安装库
composer require retailcrm/url-validator:"^1"
- 如果尚未包含或您之前未使用Composer,请包含自动加载器。
require 'path/to/vendor/autoload.php';
将 path/to/vendor/autoload.php
替换为Composer的 autoload.php
的正确路径。
使用
您必须使用Symfony Validator来使用此库。请参阅 symfony/validator的官方文档 以了解如何使用它。如果您想使用与Symfony框架一起使用的symfony/validator
- 您应使用 此文档。
在确保您正在使用symfony/validator
后,您只需将@CrmUrl()
注解附加到包含系统URL的DTO实体字段。
之后,验证器在DTO上的validate
调用将生成不正确URL的正确违规消息。
以下是DTO的示例(注意: @Assert\Url()
是可选的)
<?php namespace App\Dto; use Symfony\Component\Validator\Constraints as Assert; use RetailCrm\Validator\CrmUrl; class Connection { /** * @var string * * @Assert\NotBlank() * @Assert\Url() * @CrmUrl() */ public $apiUrl; }
下面您可以找到完整的示例用法(注意:它需要doctrine/annotations
和symfony/cache
才能正常工作)。
Connection.php
<?php namespace App; use Symfony\Component\Validator\Constraints as Assert; use RetailCrm\Validator\CrmUrl; class Connection { /** * @var string * * @Assert\NotBlank() * @Assert\Url() * @CrmUrl() */ public $apiUrl; public function __construct(string $apiUrl) { $this->apiUrl = $apiUrl; } }
app.php
namespace App; // We assume that `app.php` is stored within a directory that is being autoloaded by Composer. require __DIR__ . '/../vendor/autoload.php'; use Symfony\Component\Validator\Validation; $validator = Validation::createValidatorBuilder() ->enableAnnotationMapping(true) ->addDefaultDoctrineAnnotationReader() ->getValidator(); $violations = $validator->validate(new Connection('https://test.retailcrm.pro')); if (0 !== count($violations)) { foreach ($violations as $violation) { echo $violation->getMessage(); } }