two-bros / validation-service
Requires (Dev)
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- orchestra/testbench: ~3.0
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-09-14 17:16:18 UTC
README
Composer
您可以通过运行以下命令使用Composer安装此包:composer require "two_bros/validation-service:~1.0"。
或者,通过将包添加到您的 composer.json
{
"require": {
"two_bros/validation-service": "~1.0"
}
}
然后通过运行 composer install 或 composer update 来安装
配置
安装包后,您需要在 config/app.php 下的 providers 数组中注册服务提供者
'providers' => [ ... TwoBros\ValidationService\Providers\ValidationServiceProvider::class, ];
将服务提供者添加到 config/app.php 后,您应使用以下命令从包中发布配置:php artisan vendor:publish
这将创建一个名为 validation_service.php 的文件在配置目录中。此文件将用于添加您可能创建的任何自定义验证规则。
此配置文件的格式为
return [ 'passwordStrength' => 'User@passwordStrength' ];
基本用法
简单验证
对于您需要验证的每个模型,您可以简单地创建一个验证类,并扩展 TwoBros\ValidationService\Services\Validation\LaravelValidator。
use TwoBros\ValidationService\Services\Validation\LaravelValidator; class ModelCreateValidator extends LaravelValidator { protected $rules = [ 'name' => 'required|min:8' ]; }
现在,当您想要验证数据时,可以将数据传递给验证器并确定其是否通过。
$modelValidator = new ModelCreateValidator($this->app['validator']); if ($modelValidator->with($inputArray) ->passes()) { // Do some stuff for passing } else { // Get the errors $validationErrors = $modelValidator->errors(); // Do some stuff for failing }
自定义消息
如果您想自定义验证消息,可以通过将消息数组传递给 with 方法来实现。
$messages = [ 'required' => 'The field :attribute is required' ]; $modelValidator = new ModelCreateValidator($this->app['validator']); if ($modelValidator->with($inputArray, $messages) ->passes()) { // Do some stuff for passing } else { // Get the errors $validationErrors = $modelValidator->errors(); // Do some stuff for failing }
或者使用验证器的 withMessages 方法。
$messages = [ 'required' => 'The field :attribute is required' ]; $modelValidator = new ModelCreateValidator($this->app['validator']); if ($modelValidator->with($inputArray) ->withMessages($messages) ->passes()) { // Do some stuff for passing } else { // Get the errors $validationErrors = $modelValidator->errors(); // Do some stuff for failing }
将唯一性要求添加到验证中
有时您可能想要使用唯一性,但在更新操作时,您需要使用当前记录的id来排除当前记录的唯一性检查。
为此,您需要在验证器类中添加一个方法 addRuntimeValidationRules 来更新所需的id规则。
use TwoBros\ValidationService\Services\Validation\LaravelValidator; class ModelCreateValidator extends LaravelValidator { protected $rules = [ 'name' => 'required|min:8', 'email' => 'required|max:100|unique:users,email' ]; public function addRuntimeValidationRules() { $this->rules[ 'email' ] = 'required|max:100|unique:users,email,' . $this->uniqueIds[ 'email' ]; return $this; } }
然后您可以将此函数添加到调用字符串中,以便在验证时根据所需的id进行自定义。
$modelValidator = new ModelCreateValidator($this->app['validator']); if ($modelValidator->with($inputArray) ->setUniqueId('email', $modelToUpdate->id) ->addRuntimeValidationRules() ->passes()) { // Do some stuff for passing } else { // Get the errors $validationErrors = $modelValidator->errors(); // Do some stuff for failing }
请注意,您必须使用 setUniqueId 方法调用来设置当前记录的id。此外,您可以使用Laravel的IoC将验证器类带入方法,而不是实例化验证器类。
public function update(ModelValidator $modelValidator) { if ($modelValidator->with($inputArray) ->setUniqueId('email', $modelToUpdate->id) ->addRuntimeValidationRules() ->passes()) { // Do some stuff for passing } else { // Get the errors $validationErrors = $modelValidator->errors(); // Do some stuff for failing } }
许可
本软件遵循Apache License,版本2.0(“许可”);除非遵守本许可,否则不得使用此文件。您可以在以下位置获取许可副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或以书面形式同意,否则在许可下分发的软件按“原样”提供,不提供任何明示或暗示的保证或条件。有关许可的具体语言、权限和限制,请参阅许可。