larakit/lk-validatebuilder

[Larakit] 验证构建器

dev-master 2018-08-09 05:48 UTC

This package is auto-updated.

Last update: 2024-09-16 00:53:05 UTC


README

验证规则数组生成器

##该包解决的问题

  • 通过自动补全节省在编写验证规则数组时的时间

以下以 Request 为例展示使用方法

###1. 生成验证规则构建器

php artisan make-lk:validator UserRegister

将创建一个文件

./app/Http/Validators/UserRegisterValidator.php

打开它并添加规则

<?php
namespace App\Validators;

use Larakit\ValidateBuilder;

class UserRegisterValidator extends ValidateBuilder {

    function build() {
        $this
        ->messageRequired('Забыл заполнить?')
        //############################################################
        //составляем правила для поля "логин"
        //############################################################
        ->to('login')
        //это будет обязательное поле
        ->ruleRequired('Мы настаиваем на заполнении этого поля')
        //с минимальной длиной 6 символов
        ->ruleMin(6)
        //с проверкой уникальности по полю логин в таблице пользователей
        ->ruleUnique('users', 'login')
        //############################################################
        //составляем правила для поля "пароль"
        //############################################################
        ->to('password')
        //это будет обязательное поле
        ->ruleRequired()
        //это будет требовать подтверждения
        ->ruleConfirmed()
        //оно должно соотвествовать регулярному выражению
        ->ruleRegex('[\w\d]+')
        //с минимальной длиной 6 символов
        ->ruleMin(8)
        //############################################################
        //составляем правила для поля "фамилия"
        //############################################################
        ->to('last_name')
        //с минимальной длиной 6 символов
        ->ruleMin(3)
        //с максимальной длиной 30 символов
        ->ruleMax(30)
        //состоящей только из букв
        ->ruleAlpha()
        //############################################################
        //составляем правила для поля "логин"
        //############################################################
        ->to('first_name')
        //с минимальной длиной 6 символов
        ->ruleMin(3)
        //с максимальной длиной 30 символов
        ->ruleMax(30)
        //состоящей только из букв
        ->ruleAlpha()
        //будем требовать заполнение поля "имя" ТОЛЬКО когда заполнено поле "отчество"
        ->ruleRequiredWith('middle_name')
        //############################################################
        //составляем правила для поля "логин"
        //############################################################
        ->to('middle_name')
        //с минимальной длиной 6 символов
        ->ruleMin(3)
        //с максимальной длиной 30 символов
        ->ruleMax(30)
        //состоящей только из букв
        ->ruleAlpha()
        //будем требовать заполнение поля "отчество" ТОЛЬКО когда заполнены оба поля: "фамилия" и "отчество"
        ->ruleRequiredWithAll('first_name,last_name')
    }

}

###2. 生成请求本身

php artisan make:request UserRegister

将创建一个文件

./app/Http/Requests/UserRegister.php

其中将编写规则,它们将是以下内容

<?php

namespace App\Http\Requests;

use App\Validators\UserRegisterValidator;
use App\Http\Requests\Request;

class UserRegister extends Request {

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize() {
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules() {
      return UserRegisterValidator::instance()->rules();
    }
    
    /**
     * Set custom messages for validator errors.
     *
     * @return array
     */
    public function messages()
    {
      return UserRegisterValidator::instance()->messages();
    }
    

##输出结果

###规则

[
  "login" => "required|min:6|unique:users,login"
  "password" => "required|confirmed|regex:[\w\d]+|min:8"
  "last_name" => "min:3|max:30|alpha"
  "first_name" => "min:3|max:30|alpha|required_with:middle_name"
  "middle_name" => "min:3|max:30|alpha|required_with_all:first_name,last_name"
];

###错误消息

[
    'required' => 'Забыл заполнить?',
    'login.required' => 'Мы настаиваем на заполнении этого поля'
];

###头部 - 不要把它变成一个阁楼,也不需要储存不需要的东西!把这些事情交给自动补全吧!