初学TP5验证器使用分享

小菜鸟一枚,初学TP5,现分享TP5**验证器学习心得,以系统登录验证为例.

1.登录页面表单以最简单的组合用户名,密码,提交按钮为例.

提交按钮type="submit"改为type=“button”,为增加用户体验使用ajax提交.
2.script脚本如下:

<!--ajax提交-->
		<script>
			$(function(){
			    $('#login').on('click', function(){
			        $.ajax({
						type: 'POST',
						url: "{:url('User/checkLogin')}",
						data: $('form').serialize(),			
						dataType: 'json',
						success: function(data){
							if (data.status == 1) {
								
							    alert(data.message);			
							    window.location.href="/";		
							    //由于设置了路由Route::rule('/','index/index/index'); 跳转地址设为"/"
							} else {
							    alert(data.message);
							}
						}
					});
				})
			})
		</script>

3.创建验证器及验证规则/场景
在这里插入图片描述
由于怕麻烦,将验证规则 r u l e 和 返 回 信 息 m e s s a g e 都 以 数 组 形 式 写 在 rule和返回信息message都以数组形式写在 rulemessagerule中,场景$scene设置login和register两个场景

<?php	
	namespace app\index\validate;
	use think\Validate;
	
	class User extends Validate
	{
		
		//$rule验证规则及返回信息
		protected $rule=[
			['name','require|alphaDash|length:4,12','用户名必填|用户名只能使用字母、数字、下划线_|用户名长度为4-12位'],
			['password','require|length:6,12','密码必填|密码长度为6-12位'],
			['email','require|email','邮箱必填|邮箱格式不正确']
		];
		
		//验证场景
		protected $scene=[
			'login'=>['name','password'],		//	登录验证场景
			'register'=>['email','name','password'],		//注册验证场景
		];		
	}
?>

3.数据提交到User控制器checkLogin方法下验证:
验证时使用一下代码:

$result = $this->validate($data,'User.login');		//使用User验证器中login场景验证

进行验证.
在这里插入图片描述
如果使用

$validate=validate('User');
$result = $validate->scene('login')->check($data);

进行验证,$result返回的是布尔值,而不是提示信息.
例如:
在这里插入图片描述

<?php
namespace app\index\controller;
use app\index\controller\Base;
use think\Request;
use think\Validate;
use app\index\model\User as UserModel;

class User extends Base
{

	//登录页面
	public function login()
	{
		return $this->view->fetch();
	}
	
 //登录验证
    public function checkLogin(Request $request)
    {
       $status = 0; //验证失败标志
        $result = '验证失败'; //失败提示信息
        $data = $request -> param();


		$result = $this->validate($data,'User.login');		//使用User验证器中login场景验证
        //通过验证后,进行数据表查询
        //此处必须全等===才可以,因为验证不通过,$result保存错误信息字符串,返回非零
        if (true === $result) {

            //查询条件
            $map = [
                'name' => $data['name'],
                'password' => md5($data['password'])
            ];

            //数据表查询,返回模型对象
            $user = UserModel::get($map);
            if (null === $user) {
                $result = '没有该用户,请检查';
            } else {
                $status = 1;
                $result = '验证通过,点击[确定]后进入后台';
            }
        }
        return ['status'=>$status, 'message'=>$result, 'data'=>$data];
    }
	//退出登录
	public function logout()
    {
    	
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值