secit-pl/validation-bundle

额外的 Symfony 验证器。

安装次数: 10,942

依赖项: 0

建议者: 0

安全性: 0

星标: 4

关注者: 1

分支: 2

开放问题: 0

类型:symfony-bundle

3.1.0 2024-03-28 11:03 UTC

This package is not auto-updated.

Last update: 2024-09-15 08:49:50 UTC


README

为 Symfony 设置了额外的验证器。

兼容性矩阵

安装

在命令行中运行

$ composer require secit-pl/validation-bundle

验证器

NotBlankIf

此验证器检查值是否不为空,就像标准的 NotBlank Symfony 验证器一样,但也允许使用 Symfony 表达式语言定义 NotBlank 验证应执行的条件。

从 Symfony 6.2 开始,您还可以使用 When 验证器。

https://symfony.ac.cn/blog/new-in-symfony-6-2-conditional-constraints

https://symfony.ac.cn/doc/6.2/reference/constraints/When.html

示例用法

use SecIT\ValidationBundle\Validator\Constraints as SecITAssert;

// ...

#[SecITAssert\NotBlankIf("this.isSuperUser")]
private ?string $email = null;

public function isSuperUser(): bool
{
    return true;
}

参数

FileExtension

此验证器检查文件是否具有有效的文件扩展名。

从 Symfony 6.2 开始,您还可以在 File 验证器中使用 "extensions" 选项。

https://symfony.ac.cn/blog/new-in-symfony-6-2-improved-file-validator

https://symfony.ac.cn/doc/6.2/reference/constraints/File.html#extensions

示例用法

use SecIT\ValidationBundle\Validator\Constraints as SecITAssert;

// ...

#[SecITAssert\FileExtension(["jpg", "jpeg", "png"])]
private $file;
use SecIT\ValidationBundle\Validator\Constraints as SecITAssert;

// ...

#[SecITAssert\FileExtension(disallowedExtensions: ["jpg", "jpeg", "png"])]
private $file;

参数

注意!强烈建议与原生 Symfony 文件/图片验证器一起使用此验证器。

use SecIT\ValidationBundle\Validator\Constraints as SecITAssert;
use Symfony\Component\Validator\Constraints as Assert;

// ...

#[Assert\Image(maxSize: '2M', mimeTypes: ["image/jpg", "image/jpeg", "image/png"])]
#[SecITAssert\FileExtension(validExtensions: ["jpg", "jpeg", "png"])]
private $file;

CollectionOfUniqueElements

检查集合是否只包含唯一元素。

参数

use SecIT\ValidationBundle\Validator\Constraints as SecITAssert;

// ...

#[SecITAssert\CollectionOfUniqueElements()]
private $collection;

此验证器还可以用于验证唯一文件上传。

<?php

declare(strict_types=1);

namespace App\Form;

use SecIT\ValidationBundle\Validator\Constraints\CollectionOfUniqueElements;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\FormBuilderInterface;

class ExampleType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('files', CollectionType::class, [
            'entry_type' => FileType::class,
            'allow_add' => true,
            'constraints' => [
                new CollectionOfUniqueElements(),
            ],
        ]);
    }
}

AntiXss

检查文本是否包含使用 voku\anti-xss 库进行的 XSS 攻击。

use SecIT\ValidationBundle\Validator\Constraints as SecITAssert;

// ...

#[SecITAssert\AntiXss()]
private $text;

NaiveNoHtml

执行非常简单的检查以确定文本是否包含 HTML。

use SecIT\ValidationBundle\Validator\Constraints as SecITAssert;

// ...

#[SecITAssert\NaiveNoHtml()]
private $text;

参数

BurnerEmail

检查电子邮件地址是否为一次性电子邮件地址(burner email)。此检查是对 wesbos/burner-email-providers 提供的列表进行的。如果您想使用此验证器,则需要手动安装此包 (composer require wesbos/burner-email-providers)。

use SecIT\ValidationBundle\Validator\Constraints as SecITAssert;

// ...

#[SecITAssert\BurnerEmail()]
private $email;

ClamAvScanFile

使用 ClamAV 扫描文件以检测感染。检查是通过 sineflow/clamav 包进行的。如果您想使用此验证器,则需要手动安装和配置此包。

您可以在以下位置找到测试文件 https://github.com/fire1ce/eicar-standard-antivirus-test-files/tree/master

如果将 PrivateTmp 设置为 true,则验证器将无法正常工作,因为 PHP 中的临时文件路径将与实际系统临时文件路径不同,因此 clamscan 将找不到要扫描的文件!

use SecIT\ValidationBundle\Validator\Constraints as SecITAssert;

// ...

#[SecITAssert\ClamAvScanFile()]
private \Symfony\Component\HttpFoundation\File\File $file;

想支持此包吗?

请考虑在我们的 random code generator 服务 codito.io 上使用。

codito.io 上,您可以免费生成多达 250,000 个格式任意的代码。您可以使用生成的代码用于诸如促销代码(例如,可以打印在包装内部)、序列号、一次性或多次使用的密码、彩票券、折扣代码、优惠券、随机字符串等目的 - 更多用例请参阅我们的 示例。如果 250,000 个代码不够用,您可以使用我们的 商业代码生成服务

Random Code Generator