文章目录
- 1. 场景一:只有一个密码框,并且是可选项,留空不修改密码,不留空则修改密码
- 2. 场景二:两个密码框,修改密码时有新密码、确认密码,新密码框不为空时,确认密码才验证
1. 场景一:只有一个密码框,并且是可选项,留空不修改密码,不留空则修改密码
编辑用户表单
<form action=\"\" method=\"post\">用户名 <input type=\"text\" name=\"username\" value=\"liang\" readonly autocomplete=\"off\"><br>手机号 <input type=\"text\" name=\"mobile\" value=\"10086\" autocomplete=\"off\"><br>新密码 <input type=\"password\" name=\"password\" placeholder=\"可选项,留空则不修改密码\"><br><button>确认修改</button></form>
验证器类
<?phpnamespace app\\validate;use think\\Validate;// PHP技术群: 159789818class User extends Validate{/*** 定义验证规则*/protected $rule = [\'username\' => \'require|unique:user\',\'password\' => \'require|length:4,16|confirm\',\'mobile\' => \'require\',];/*** edit 验证场景 编辑用户信息*/public function sceneEdit(){return $this->remove(\'username\', \'unique\')->remove(\'password\', \'require|confirm\');}}
使用验证器验证数据
public function edit(){if ($this->request->isPost()) {$data = input(\'post.\');try {validate(\'app\\validate\\User\')->scene(\'edit\')->batch(true)->check($data);} catch (\\think\\exception\\ValidateException $e) {halt(\'验证失败\', $e->getError());}echo \'通过验证\';} else {return view();}}
2. 场景二:两个密码框,修改密码时有新密码、确认密码,新密码框不为空时,确认密码才验证
编辑用户表单
<form action=\"\" method=\"post\">用户名 <input type=\"text\" name=\"username\" value=\"liang\" readonly autocomplete=\"off\"><br><br>手机号 <input type=\"text\" name=\"mobile\" value=\"10086\" autocomplete=\"off\"><br><br>新密码 <input type=\"password\" name=\"password\" placeholder=\"可选项,留空则不修改密码\"><br><br>确认密码 <input type=\"password\" name=\"newpassword\" placeholder=\"必须和新密码文本框保持一致\"><br><br><button>确认修改</button></form>
验证器类
<?phpnamespace app\\validate;use think\\Validate;class User extends Validate{/*** 定义验证规则*/protected $rule = [\'username\' => \'require|unique:user\',\'password\' => \'require|length:4,16|confirm\',\'mobile\' => \'require\',];/*** 定义错误信息*/protected $message = [\'newpassword.requireWith\' => \'确认密码不能为空\',\'newpassword.confirm\' => \'两个新密码不一致\',];/*** edit 验证场景 编辑用户信息*/public function sceneEdit(){return $this->remove(\'username\', \'unique\')->remove(\'password\', \'require|confirm\')->append(\'newpassword\', \'requireWith:password|confirm:password\');}}
使用验证器验证数据
public function edit(){if ($this->request->isPost()) {$data = input(\'post.\');try {validate(\'app\\validate\\User\')->scene(\'edit\')->batch(true)->check($data);} catch (\\think\\exception\\ValidateException $e) {halt(\'验证失败\', $e->getError());}echo \'通过验证\';} else {return view();}}