yiisoft/hydrator-validator

支持原始数据验证的 hydrator 验证

2.0.1 2024-08-06 12:18 UTC

This package is auto-updated.

Last update: 2024-09-20 07:49:38 UTC


README

Yii

Yii 验证 hydrator


Latest Stable Version Total Downloads Build status codecov Mutation testing badge static analysis type-coverage psalm-level

该包提供了一个 hydrator,它还执行 验证,包括原始数据。当输入数据来自用户,并且需要验证然后将其放入 DTO 时,它非常有用。

要求

  • PHP 8.0 或更高版本。

安装

该包可以使用 Composer 安装

composer require yiisoft/hydrator-validator

一般用法

验证 hydrator 是 hydrator 的装饰器,允许验证

  • 使用 Validate PHP 属性标记的属性的原始数据;
  • 创建或填充对象后的对象。

要使用它,正在验证的对象必须实现 ValidatedInputInterface。您可以使用 ValidatedInputTrait 来轻松创建此类对象。对象的原始值验证规则由 Validate PHP 属性定义。

对象示例

use Yiisoft\Hydrator\Validator\Attribute\Validate;
use Yiisoft\Hydrator\Validator\ValidatedInputInterface;
use Yiisoft\Hydrator\Validator\ValidatedInputTrait;
use Yiisoft\Validator\Rule\Email;
use Yiisoft\Validator\Rule\Required;

final class InputDto implements ValidatedInputInterface 
{
    use ValidatedInputTrait;
    
    #[Email]
    private string $email;
    
    #[Validate(new Required())]
    private string $name;
}

可以通过 getValidationResult() 方法获取验证结果。有关进一步处理结果的说明,请参阅相应的 验证器指南部分

验证 hydrator 使用示例

use Psr\Http\Message\RequestInterface;
use Yiisoft\Hydrator\Validator\ValidatingHydrator;

public function actionEdit(RequestInterface $request, ValidatingHydrator $hydrator): ResponseInterface
{
    $data = $request->getParsedBody();    
    $inputDto = $hydrator->create(InputDto::class, $data);
    
    if (!$inputDto->getValidationResult()->isValid()) {
        // Validation didn't pass :(
    }
    
    // Everything is fine. You can use $inputDto now.    
}

文档

如果您需要帮助或有问题,Yii 论坛 是一个不错的选择。您还可以查看其他 Yii 社区资源

许可

Yii 验证 hydrator 是自由软件。它根据 BSD 许可证的条款发布。有关更多信息,请参阅 LICENSE

Yii 软件公司 维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack