etelford / laravel-api-validation
为 Laravel API 请求定制的验证
v0.1.0
2017-11-20 20:00 UTC
Requires
- php: >=7.0
- illuminate/container: ~5.4
- illuminate/http: ~5.4
- illuminate/support: ~5.4
- illuminate/validation: ~5.4
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~5.0
- symfony/var-dumper: ^3.1
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);