etelford/laravel-api-validation

为 Laravel API 请求定制的验证

v0.1.0 2017-11-20 20:00 UTC

This package is auto-updated.

Last update: 2024-09-28 22:51:38 UTC


README

一个轻量级的包,允许创建自定义验证规则,主要用于替代 Form Requests 或内联 Validators 用于 API 请求。

系统要求

Laravel 5.4+ 和 PHP >= 7.0。

安装

通过 Composer 安装。

composer require etelford/laravel-api-validation

使用方法

首先,导入 HandlesApiRequests 特性(通常在您的基控制器中)

use Etelford\LaravelValidation\HandlesApiRequests;

要使用 Laravel 内置验证器进行自定义验证,创建一个验证类

<?php

namespace App\Validation\User;

class Store extends \Etelford\LaravelValidation\BaseValidator
{
    public function rules() : array
    {
        return ['email' => 'required|email'];
    }
}

然后在控制器方法中,使用您刚刚创建的验证

// UserController.php
public function store($request, $id)
{
    $this->validate($request, 'User::Store');
}

默认情况下,如果验证失败,将抛出 ApiValidationException 异常。

如果您想绕过此行为,可以在 validate() 方法中传递第三个参数

$validator = $this->validate($request, 'User::Store', $throwOnFailure = false);

从这,您可以获取 Validator 实例并访问所有 Laravel 内置验证方法

if ($validator->validator()->passes()) {
    return true;
}

return false;

如果您需要更多专业化的验证,这些验证无法直接由 Laravel 的 Validator 处理,您可以创建自定义规则并将其链接到验证调用

class VerifyMinimum extends \Etelford\LaravelValidation\CustomRule
{
    public function passes() : bool
    {
        return $this->amount >= $this->minimum;
    }

    public function messageBag() : array
    {
        return ['amount' => 'Amount must be at least' . $this->minimum];
    }
}

$customRule = new VerifyMinimum(['amount' => 100000, 'minimum' => 50000]);
$validation = $class->validate($request, 'entity::bar')->attachRules($customRule);