1. 程式人生 > >Laravel自定義驗證(Validate)規則最簡單方法

Laravel自定義驗證(Validate)規則最簡單方法

1、Validate

<?php

/**
 * @Author: leroi
 * @Date:   2018-12-13 11:26:48
 * @Last Modified by:   leroi
 * @Last Modified time: 2018-12-13 13:28:55
 */

namespace App\Http\Requests\LoRa;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

/**
 * 
 */
class Test
{

    public static function search($data){
        $rules = [
            'tags' => ['integer','max:30',function($attribute,$value,$fail){
		        if ($value <= 10) {
		            $fail(':attribute must be at least 10.');
		        }
            }]
        ];
        $messages = [
        ];
        return self::compileErrMsg($data, $rules, $messages);
    }


    private static function compileErrMsg($data, $rules, $messages){
        $validator = Validator::make($data, $rules, $messages);
        if($validator->fails()){
            $result = [];
            foreach(json_decode(json_encode($validator->errors()),true) as $k => $v){
                $result[$k] = $v[0];
            }
            return $result;
            die;
        }
        return false;
    }

}

2、Controller

<?php

/**
 * @Author: leroi
 * @Date:   2018-11-27 17:03:51
 * @Last Modified by:   leroi
 * @Last Modified time: 2018-12-13 11:46:50
 */
namespace App\Http\Controllers\api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redis;

use App\Http\Requests\LoRa\Test;

/**
 * 
 */
class TestController extends Controller
{

	public function test(Request $request){
		$input = $request->only(['tags']);
        if($validate_error = Test::search($input)){
            return $validate_error;
        }
        return [];
	}


}