two-bros/validation-service

1.08 2015-09-06 23:26 UTC

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 installcomposer 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

除非适用法律要求或以书面形式同意,否则在许可下分发的软件按“原样”提供,不提供任何明示或暗示的保证或条件。有关许可的具体语言、权限和限制,请参阅许可。