1:背景
2:用法
Laravel 提供了许多有用的验证规则。但你可能想自定义一些规则。注册自定义验证规则的方法之一,就是使用 Validator Facade 中的 extend 方法,让我们在 服务提供者 中使用这个方法来注册自定义的验证规则:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Validator;
class AppServiceProvider extends ServiceProvider
{
/**
* 启动任意应用程序服务。
*
* @return void
*/
public function boot()
{
Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {
return $value == 'foo';
});
}
/**
* 注册服务容器。
*
* @return void
*/
public function register()
{
//
}
}
自定义的验证闭包接收四个参数:要被验证的属性名称 attribute,属性的值value,传入验证规则的参数数组 $parameters,及 Validator 实例。
3:说明:上面只是说了有这个东西,具体怎么使用,还是没有明说。下面给出例子
4:例:
①新建控制器(控制器中的规则和,boot中的‘foo’一样)
②在 App\Providers\AppServiceProvider 的boot方法中加上那一段话(实际上可以添加任意逻辑)
③在resources\lang\zh-CN\validation.php 文件的 return数组中,按照其格式,添加任意提示信息(注意,键名和boot方法中
Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {
return $value == 'foo';
});
‘foo’位置的字段一样)
5:示例
新建控制器方法
public function dd(Request $request)
{
$inputs = $request->all();
$rule = array(
'title' => 'required|foo',
);
$validate = Validator::make($inputs, $rule);
if ($validate->fails())
{
$errors = $validate->errors()->all();
return $this->genResponse(0, $errors);
}
}
在resources\lang\zh-CN\validation.php
'foo' => "这是自定义规则",
在App\Providers\AppServiceProvider创建boot方法
public function boot()
{
Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {
return $value == 'foo';
});
}