方法一
验证器的使用 单独抽离成一个文件
declare (strict_types = 1); namespace app\validate; use think\Validate; class ValidateAll extends Validate { /** * 定义验证规则 * 格式:'字段名' => ['规则1','规则2'...] * * @var array * require|max:25 验证规则, 可以多个, 用|隔开 */ protected $rule = [ 'username' => 'require|max:25|checkName:thinkphp', 'password' => 'require|min:6', 'email' => 'require|email', 'price' => 'float', 'sum' => 'number|between:1,100', // 数字, 1-100之间 ]; // 自定义规则 protected function checkName($value, $rule, $data = []) { return $rule == $value ? $rule. '是违禁词' : true; } /** * 定义错误信息 * 格式:'字段名.规则名' => '错误信息' * 返回的错误信息提示, 如果不满足要求, 可以自定义错误信息 * @var array */ protected $message = [ 'username.require' => '用户名必须', 'username.max' => '用户名最多不能超过25个字符', 'password.require' => '密码必须', 'password.min' => '密码最少不能少于6个字符', 'email.require' => '邮箱必须', 'email.email' => '邮箱格式错误', ]; }
使用的地方
namespace app\controller; use app\BaseController; use app\validate\ValidateAll; use think\exception\ValidateException; class Login extends BaseController { public function index() { // 全局的验证器 try { validate(ValidateAll::class)->batch(true)->check([ 'username' => 'thinkphp', 'password' => '122323', 'email' => '[email protected]' ]); } catch (ValidateException $e) { // 验证失败 输出错误信息 dump($e->getError()); } } }
方法二
直接在组件 类文件使用验证器规则
namespace app\controller; use app\BaseController; use think\Validate; class Login extends BaseController { public function index() { // 单独在组件使用验证器规则 // $val = Validate::rule([ // 'username' => 'require|max:25|checkName:thinkphp', // 'password' => 'require|min:6', // 'email' => 'require|email', // 'price' => 'float', // 'sum' => 'number|between:1,100', // 数字, 1-100之间 // ]); // $res = $val->batch(true)->check([ // 'username' => 'thinkphp', // 'password' => '122323', // 'email' => '[email protected]' // ]); // if (!$res) { // dump($val->getError()); // } // 或者 需要自定义验证方法 $validate = new class extends Validate { protected function checkName($value, $rule, $data = []) { return $rule == $value ? $rule. '是违禁词' : true; } }; $validate->rule([ 'username' => 'require|max:25|checkName:thinkphp', 'password' => 'require|min:6', 'email' => 'require|email', 'price' => 'float', 'sum' => 'number|between:1,100', // 数字, 1-100之间 ]); // 验证数据 $data = [ 'username' => 'thinkphp', 'password' => '122323', 'email' => '[email protected]' ]; // 执行验证 $res = $validate->batch(true)->check($data); if (!$res) { dump($validate->getError()); } echo $res; } }标签:username,验证,require,rule,thinkphp,password,email From: https://www.cnblogs.com/anans/p/17986045