fluoresce/validate-embedded

约束启用基于组的嵌入式对象验证,使用 Symfony 验证组件。

1.3.0 2023-05-23 09:55 UTC

This package is auto-updated.

Last update: 2024-09-23 12:38:54 UTC


README

此库为 Symfony 验证组件 提供了 Validate 约束。

此约束的行为类似于内置的 Valid 约束,但尊重 groups 选项。此外,它还增加了一个选项来指定要针对嵌入式对象(s)的验证组。

安装

打开命令行控制台,进入您的项目目录,然后执行以下命令以下载此包的最新稳定版本

$ composer require fluoresce/validate-embedded

此命令需要您全局安装 Composer,具体请参阅 Composer 文档中的 安装章节

文档

以下示例假设您正在使用完整的 Symfony 框架,尽管此包可以用于任何有 Symfony 验证组件的项目

基本用法

此示例显示了一个 Author,它包含一个 Book 集合。当对 Authorgroup1 运行验证时,它将级联到所有嵌入的 Book 实例。

这里的操作略有不同于标准的 Valid 约束,因为对 Book 实例的验证是以默认组运行的。

<?php

use Fluoresce\ValidateEmbedded\Constraints as Fluoresce;

class Author
{
    /**
     * @var Book[]
     * @Fluoresce\Validate(groups={"group1"});
     */
    private $books;
}
<?php

use Symfony\Component\Validator\Constraints as Assert;

class Book
{
    /**
     * @var string
     * @Assert\NotBlank()
     */
    private $title;
}

指定嵌入式验证组

假设我们想要为 Book 实例指定不同的验证组。我们可以在 Validate 注解中指定它们。

<?php

use Fluoresce\ValidateEmbedded\Constraints as Fluoresce;

class Author
{
    /**
     * @var Book[]
     * @Fluoresce\Validate(embeddedGroups={"bookgroup1"});
     */
    private $books;
}
<?php

use Symfony\Component\Validator\Constraints as Assert;

class Book
{
    /**
     * @var string
     * @Assert\NotBlank(groups={"bookgroup1"})
     */
    private $title;
}

现在,每次验证 Author 实例时,嵌入式 Book 将使用验证组 bookgroup1 进行验证。

结合所有选项

此示例结合了之前的示例,以显示如何共同操作。

<?php

use Fluoresce\ValidateEmbedded\Constraints as Fluoresce;

class Author
{
    /**
     * @var Book[]
     * @Fluoresce\Validate(groups={"group1"}, embeddedGroups={"bookgroup1"});
     */
    private $books;
}
<?php

use Symfony\Component\Validator\Constraints as Assert;

class Book
{
    /**
     * @var string
     * @Assert\NotBlank(groups={"bookgroup1"})
     */
    private $title;
}