nimaebrazi/laravel-validator

此包已被废弃且不再维护。未建议替代包。

dev-master 2018-11-09 17:27 UTC

This package is not auto-updated.

Last update: 2023-12-07 17:14:49 UTC


README

安装

composer require nimaebrazi/laravel-validator

如果使用laravel 5.4.*及更早版本,需要在config/app.php中添加服务提供者

'providers' => [
    ...
    \nimaebrazi\LaravelValidator\LaravelValidatorServiceProvider::class,
    ...
]

发布配置

php artisan vendor:publish

您可以在配置中更改消息路径文件:laravel_validator.php

messages.php文件中添加此键:resources/lang/YOUR_LANGUAGE/messages.php

"validation_failed" => "messages.validation_failed"

此包抛出名为ValidationException的异常。为了处理Laravel异常,在Handler.php文件中添加以下代码,并为您自己的项目进行自定义。

use nimaebrazi\LaravelValidator\src\Validator\ValidationException;
use Symfony\Component\HttpFoundation\Response;

...
/**
* Render an exception into an HTTP response.
*
* @param  \Illuminate\Http\Request  $request
* @param  \Exception  $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
    if($exception instanceof ValidationException){
        return response()->json([
            'status' => Response::HTTP_UNPROCESSABLE_ENTITY,
            'description' => $exception->getMessage(),
            'data' => [
                'errors' => $exception->getErrors()
            ]

        ], 422);
    }

  return parent::render($request, $exception);
}

用法

步骤 1

创建一个验证类

\nimaebrazi\LaravelValidator\Validator\AbstractValidator

public function messages(): array & public function customAttributes(): array方法为可选。

use nimaebrazi\LaravelValidator\Validator\AbstractValidator;

class UpdateUserProfile extends AbstractValidator
{
    /**
     * Rules of validation.
     *
     * @return array
     */
    public function rules(): array
    {
        return [
            'name' => 'required|min:3',
        ];
    }
    
    // OPTIONAL
    /**
     * Messages of rules.
     *
     * @return array
     */
    public function messages(): array
    {
        return [
            //
        ];
    }

    // OPTIONAL
    /**
     * Custom attributes of rules.
     *
     * @return array
     */
    public function customAttributes(): array
    {
        return [
            //
        ];
    }
}

更多关于

自定义错误消息

自定义属性

步骤 2:将类注入到控制器中

class ApiUserController extends Controller
{
    /**
     * @param Request $request
     * @param UpdateUserProfile $validator
     * @throws \Exception
     * @throws \nimaebrazi\LaravelValidator\src\Validator\ValidationException
     */
    public function update(Request $request, UpdateUserProfile $validator)
    {
        $validator->make($request->all())->validate();
    }

注意

  • 当您调用validate函数时,包会抛出默认异常。如果您想以其他方式处理,
class ApiUserController extends Controller
{
    /**
     * @param Request $request
     * @param UpdateUserProfile $validator
     * @throws \Exception
     * @throws \nimaebrazi\LaravelValidator\src\Validator\ValidationException
     */
    public function update(Request $request, UpdateUserProfile $validator)
    {
        $validator->make($request->all());

        if($validator->fails()){
           // your codes
        }
        
        
        if($validator->passes()){
           // your codes
        }
    }

RuleManager助手

当使用验证器规则时,您是否看到了文档?我认为当忘记规则和参数时,这太难了。您可以使用此包的RuleManager。

use nimaebrazi\LaravelValidator\Validator\AbstractValidator;

class UpdateUserProfile extends AbstractValidator
{
    /**
     * Rules of validation.
     *
     * @return array
     */
    public function rules(): array
    {
        return [
            'name'  => $this->ruleManager()->required()->min('3')->make(),
            'age'   => $this->ruleManager()->required()->numeric()->max('3')->min('0')->make(),
            'other' => $this->ruleManager()->required()->string()->make()        
        ];
    }
}