Laravel Validator extend for validation realname
## 注册自定义验证规则
在AppServiceProvider的boot方法中注册自定义规则
~~~php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
use Validator;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// 数据库字符串字段默认长度200个字符
Schema::defaultStringLength(200);
// 自定义的验证规则 realname 中文或者英文 中文不允许有空格2-10个字符, 英文可以有空格 3-50个字符
Validator::extend('realname', function ($attribute, $value) {
return preg_match('/^([\x{4e00}-\x{9fa5}]{2,10})$|^([a-zA-Z0-9\_\-\s]{3,50})$/u', $value);
});
}
public function register() { }
}
~~~
## 使用自定义规则进行验证
在你自己的controller类里面
~~~php
<?php
namespace App\Http\Controllers;
use Exception;
use Validator;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class HomeController extends Controller
{
public function index(Request $request)
{
$data_arr = $request->all();
//使用自定义的验证规则来验证数据
$validator = Validator::make($data_arr, [
'fullname' => 'realname|min:2|max:10|',
]);
// 这里是获取失败的验证结果,如果验证通过这里返回的是null
$validation_status = $validator->fails();
// 验证失败,抛出异常
if($validation_status){
// $validator->errors()获取验证失败的结果
throw new Exception($validator->errors());
}
}
}
~~~