全方位分析Laravel的Validator验证

初步使用了一下Validator,感觉很强大,也很方便,梳理一下流程。

我个人习惯把验证写在模型里面,这样控制器看起来更简洁,当然写在控制器也可以,写在中间件也行。也可以用Laravel自带的创建Validator表单请求验证类。

分别记录一下在模型创建表单请求两种Validator实现方法,不建议写在控制器,控制器应该保持简洁。

一:第一种使用方法,模型中使用Validator:

1:建立一个模型,加入4个方法

//验证规则
    protected $role = [
        'passwordOld' => 'required|min:6|max:12', 
        'passwordNew' => 'required|min:6|max:12|confirmed',
        'passwordNew_confirmation' => 'required|min:6|max:12',
    ]; //这三个字段为提交表单的input

    //提示信息 attribute是占位符,这里是custom方法的value
    protected $msgs = [
        'required' => ':attribute不能为空',
        'min' => ':attribute最少:min字符',
        'max' => ':attribute最长:max字符'
        'confirmed' => ':attribute输入不一致'
    ];

    // 自定义字段名称,提示的时候用到
    protected $custom = [
        'passwordOld' => '原密码',
        'passwordNew' => '新密码',
        'passwordNew_confirmation' => '密码确认',
    ];

    //设置密码 $input提交过来的表单和数据
    public function setPassword($input)
    {
        $validator = \Validator::make($input,$this->role,$this->msgs,$this->custom);
        if($validator->fails()){//验证字段失败,失败信息自己封装处理
            $validator->errors()->first(); //返回第一个错误消息,一般用这个就行了
            //$validator->errors()->all(); //返回全部错误消息,不带表单下标
            //$validator->errors(); //返回全部错误消息,带表单下标
        }
    }

小提示:confirmed参数是判断两个字段是否一致。后一个字段必须带confirmation;比如这里密码字段是:passwordNew,那么确认密码字段就是:passwordNew_confirmation。

 'passwordNew' => 'required|min:6|max:12|confirmed',
 'passwordNew_confirmation' => 'required|min:6|max:12',

相应的表单里面就是:

 input type="password" name="passwordNew_confirmation
 

这样Laravel才能正确判断两个字段输入是否一致。

还有个神奇的功能:

'passwordOld' => 'required|min:6|max:12|exists:admin,password,id,4', 
这里的 exists:admin,password,id,4  会匹配数据库,这段换成SQL语句:

select count(*) as aggregate from `js_admin` where `passsword` = 密码 and `id` = 4

2:控制器调用:

public function password(request $re)
{
	$input = $re->except('_token');//接受POST表单过来的数据,除开_token
       	$set = new Admin; //我这里的模型是Admin
       	$set->setPassword($input); //验证
}


二:第二种使用方法,创建Validator表单请求,Laravel推荐的方式

点击查看更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值