jaspaul/eloquent-model-validation

这是一个简单的包,为Laravel提供了模型验证的平台。

1.0 2020-01-21 00:24 UTC

This package is auto-updated.

Last update: 2024-09-21 19:47:34 UTC


README

Build Status Coverage Status Code Climate

这个包是引入活动记录验证概念到Laravel的实验。

安装

通过Composer

$ composer require jaspaul/eloquent-model-validation

需求

此版本支持的PHP版本如下。

  • PHP 7.2
  • PHP 7.3
  • PHP 7.4

配置

选项1

扩展验证模型而不是Eloquent\Model。

<?php

use Jaspaul\EloquentModelValidation\Model;

class Foo extends Model
{
    ...
}

选项2

在config/app.php中覆盖Eloquent。

'Eloquent' => Jaspaul\EloquentModelValidation\Model::class,

现在你可以做以下操作

<?php

class Foo extends Eloquent
{
    ...
}

选项3

更新你的类以实现Validatable,使用提供的Validates特质。如果你的项目中无法扩展提供的模型,可以使用此选项。

<?php

namespace Jaspaul\EloquentModelValidation;

use Illuminate\Database\Eloquent\Model as Base;
use Jaspaul\EloquentModelValidation\Traits\Validates;
use Jaspaul\EloquentModelValidation\Contracts\Validatable;

abstract class Model extends Base implements Validatable
{
    use Validates;

    /**
     * Returns the data to validate.
     *
     * @return array
     */
    protected function getData() : array
    {
        return $this->getAttributes();
    }
}

用法

<?php

use Jaspaul\EloquentModelValidation\Model;

class User extends Model
{
    protected function getRules() : array
    {
        return [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|min:6|confirmed',
        ];
    }
}

现在,如果你正在存储你的模型

public function store()
{
    $user = new User(Input::all());

    try {
        $user->save();
        return $user;
    } catch (\Illuminate\Validation\ValidationException $exception) {
        // You can handle exception, access the errors $exception->getErrors(),
        // or let it bubble up and let the Laravel Exception handler deal with it.

        throw $exception;
    }
}