engency / laravel-model-validation

Laravel项目中的模型验证

v0.3.1 2024-07-23 12:24 UTC

This package is auto-updated.

Last update: 2024-09-23 12:49:16 UTC


README

需求

  • PHP 7.1+
  • The Laravel框架 7.0+

安装

您可以使用composer将laravel-model-validation插件安装到您的Laravel项目中;

composer require engency/laravel-model-validation

在您想要进行验证的模型上使用Validatable特质。

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Engency\ModelValidation\Validatable;

Class User extends Model
{
   use Validatable;
}

在app目录下创建一个名为'ModelValidators'的新目录。该目录将包含适用于相关模型的所有规则。对于每个使用Validatable特质的模型,创建一个名为{name of the model}ModelValidator.php的文件。ModelValidator应类似于以下内容;

namespace App\ModelValidators;

use Engency\ModelValidation\ModelValidator;

Class UserModelValidator extends ModelValidator
{
    /**
     * @return array
     */
    public function rules() : array {
        return [
            'name' => 'required|string'
        ];
    }   
}

验证和创建新用户现在非常简单;

$user = User::validateAndCreateNew(['name' => 'John']);

更新现有用户的工作方式几乎相同;

$user->validateAndUpdate(['name' => 'John']);

您可以为每个模型添加额外的规则集;

namespace App\ModelValidators;

use Engency\ModelValidation\ModelValidator;

Class UserModelValidator extends ModelValidator
{
    /**
     * @return array
     */
    public function rules() : array {
        return [
            'name' => 'required|string'
        ];
    }

    public function otherRules() : array {
        return [
            'name' => 'required|string|min:5',
            'age' => 'required|integer|min:22'
        ];
    }

}
$user = User::validateAndCreateNew(['name' => 'John', 'age' => 25], 'other');
$user->validateAndUpdate(['name' => 'John', 'age' => 25], 'other');

有关所有规则的列表,请访问Laravel验证文档; https://laravel.net.cn/docs/validation

贡献者

许可证

此插件受MIT许可证许可。