laragrad/eloquent-model-validation

v1.0 2020-06-02 20:16 UTC

This package is auto-updated.

Last update: 2024-09-29 05:47:37 UTC


README

此包提供了一个特质 \Laragrad\Models\Concerns\HasValidation 用于模型验证。

安装

在控制台中运行命令

composer require laragrad/eloquent-model-validation

使用验证

修改您的模型

将以下代码添加到您的模型中

  1. 使用特质 \Laragrad\Models\Concerns\HasValidation 声明
  2. 验证规则
    class Test extends Model
    {
        use \Laragrad\Models\Concerns\UseValidation;
        
        protected $rules => [
            'title' => ['string', 'max:150'],
            'value' => ['integer', 'min:0', 'max:50'],
            'description' => ['string', 'nullable'],
        ];
        
        ...
    }

控制器 add() 方法示例

    use App\Models\Test;
    
    class TestController extends Controller
    {
        public function add(Request $request)
        {
            $model = \App::make(Test)
                ->tempFillable([
                    'title',
                    'value',
                    'description',
                ])
                ->fill($request->all())
                ->validate()
                ->save();
        }
    }

使用了以下由 \Laragrad\Models\Concerns\HasValidation 特质提供的方法

  • tempFillable()
  • validate()

HasValidation 特质方法

validate()

语法

validate(array $data = [], array $rules = [], array $messages = [], array $customAttributes = []) : Model

参数

  • $data - 验证数据。默认为模型属性值;
  • $rules - 验证规则。默认使用模型的 $rules 属性;
  • $messages - 自定义错误消息;
  • $customAttributes - 用于生成验证错误消息的自定义属性名。

返回一个模型。

关于 $customAttributes 参数的说明。

您可以通过以下三种方式定义 $customAttribute

  1. 定义模型的一个 $attributeNames 属性。
  2. 在路径 /resources/lang/xx/model/{YourModelPath}.attributes 中的 lang 文件中定义翻译后的属性名。例如,对于模型 App\Models\ContractType 的 lang 文件是 /resources/lang/xx/model/app/models/contract_type
  3. validation() 调用中定义 $customAttributes 参数。

tempFillable()

语法

tempFillable(array $fields) : Model

参数

  • $fields - 可以通过 fill() 填充的字段列表,直到下一次调用 save()

返回一个模型。