retailcrm/url-validator

v1.1.0 2023-10-05 20:15 UTC

This package is auto-updated.

Last update: 2024-09-05 22:32:28 UTC


README

Build Status Coverage Latest stable PHP from Packagist

RetailCRM URL验证器

此验证器将帮助您使用 symfony/validator 在项目中验证系统URL。

目录

需求

  • PHP 7.3及以上版本
  • PHP的JSON支持
  • symfony/validator

安装

按照以下步骤安装库

  1. 下载并安装 Composer 包管理器。
  2. 通过执行以下命令从Packagist安装库
composer require retailcrm/url-validator:"^1"
  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/annotationssymfony/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();
    }
}