horat1us/yii2-validation-exception

1.1.0 2022-11-14 14:21 UTC

This package is auto-updated.

Last update: 2024-09-14 18:42:19 UTC


README

Test & Lint codecov

此包增加了额外的模型验证方法和异常。
主要目的是防止在模型验证过程中出现错误(忘记检查验证结果等)。

之前在 horat1us/yii2-base 包中提供了 ModelExceptionInterface 和 ModelException 实现。

安装

使用 packagist.org

composer require horat1us/yii2-validation-exception:^1.0

结构

当 ActiveRecord 在项目仓库外部实现时(与依赖项一起工作)应使用。

当 ActiveRecord 在项目仓库中实现并可能实现接口和使用特性时使用。

  • Validation\Failure\ModelInterface - 扩展 \yii\base\Model 并包含 validateOrFailcheckOrFail 方法。
    • Model - 包含实现的特性。
  • [Validation\Failure\ActiveRecordInterface] - 扩展 \yii\db\ActiveRecord 并包含 saveOrFail 方法。

示例

带有模型和活动记录扩展

<?php

namespace App;

use Horat1us\Yii\Validation;
use yii\base;

class Model extends base\Model implements Validation\Failure\ModelInterface
{
    use Validation\Failure\Model;
    
    public $id;
    
    public function rules(): array {
        return [
            [['id',], 'required',],    
        ];
    }
}

$model = new Model;
try {
    $model->validateOrFail();
} catch (Validation\Failure $failure) {
    // handle
}

带有异常工厂

<?php

namespace App;

use Horat1us\Yii\Validation;
use yii\base;

class Model extends base\Model 
{
    /** @var string  */
    public $id;
    
    public function rules() {
        return [
            [['id',], 'required',],
        ];
    }
}

$model = new Model;

try {
    Validation\Exception::validateOrThrow($model);
} catch (Validation\Failure $failure) {
    // handle
}

许可证

MIT