Laravel的表单验证

1.Laravel的表单验证是基于Validator类完成的

2.通过一个修改密码的功能说明Validator的使用

useValidator;

//修改密码
public function modify_password(Request $request){
    if($request->isMethod('post')){
        $input = $request->all();
        $rules = [
            'password_o'=>'required',
            'password'=>'required|between:6,20|confirmed',
        ];
        $messages = [
            'password_o.required'=>'旧密码不能为空',
            'password.required'=>'新密码不能为空',
            'password.between'=>'新密码必须在6至20位之间',
            'password.confirmed'=>'新密码与确认密码不一致',
        ];
        $validator = Validator::make($input,$rules,$messages);
        if($validator->fails()){
            return back()->withErrors($validator);
        }else{
            //$userModel = new User();
            $user = User::find(session('user_id'));
            if($input['password_o'] != Crypt::decrypt($user->password)){
                return back()->with('errors','原密码错误');
            }else{
                $user->password = Crypt::encrypt($input['password']);
                if($user->save()){
                    return back()->with('errors','修改成功');
                }else{
                    return back()->with('errors','修改失败');
                }
            }
        }
    }
    return view('admin.modify_password');
}
(1)需要有要验证的字段、验证规则及提示信息三个参数
(2)在模板要显示的错误信息中,除了不符合验证规则的信息外,还有其他显示信息,因此这里用到了
return back()->with('errors','原密码错误');
(3)模板中错误信息的显示(注意与手册不同,添加了一个判断)
@if(count($errors)>0)
    @if(is_object($errors))
        @foreach($errors->all() as $v)
            <p>{{$v}}</p>
        @endforeach
    @else
        <p>{{$errors}}</p>
    @endif
@endif
(4)新密码与确认密码一致性的判断
新密码字段名为password,确认密码字段名必须为
password_confirmation(在password后面加上_confirmation,_confirmation位固定写法),否则无法使用confirmed规则






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值