一个简单的注册表单验证保持原来输入的内容实例

注册的blade模板:里面的{{old('xxx')}} 就代表原来的输入值 
<form class="form-signin" method="POST" action="/register">
        {{csrf_field()}}
        <h2 class="form-signin-heading">请注册</h2>
        <label for="name" class="sr-only">名字</label>
        <input type="text" name="name" id="name" class="form-control" placeholder="名字" required autofocus value="{{ old('name') }}">
        <label for="inputEmail" class="sr-only">邮箱</label>
        <input type="email" name="email" id="inputEmail" class="form-control" placeholder="邮箱" required autofocus value="{{ old('email') }}">
        <label for="inputPassword" class="sr-only">密码</label>
        <input type="password" name="password" id="inputPassword" class="form-control" placeholder="输入密码" required>
        <label class="sr-only">重复密码</label>
        <input type="password" name="password_confirmation" class="form-control" placeholder="重复输入密码" required>
        @include('layouts.error')
                <button class="btn btn-lg btn-primary btn-block" type="submit">注册</button>
</form>

layouts.error balde文件里面:定义一个错误输出模板供其他地方引用

@if(count($errors))
    <div class=" xuan" role="alert">
        @foreach($errors->all() as $error)
            <li>{{$error}}</li>
        @endforeach
    </div>
@endif

RegisterController控制器里面:验证通过则存数据库不通过,back->withErrors($vali)->withInput()返回到上一个页面,带着错误信息保留原来输入内容给blade模板

    //注册行为
    public function register(Request $request)
    {
        $data = $request->except('_token');  //去除_token,它的作用是csrf安全,而数据库不需要
        $vali = RegisterValidate::validate($data);
        $data['password'] = bcrypt($data['password']);
        if($vali->passes()){
            $res = User::create($data);
            if($res){
                return redirect('/login');
            }
            return back()->with('errors', '注册失败');
        }
        return back()->withErrors($vali)->withInput();
    }


RegisterValidate验证器:password.confirmed就可以验证重复密码字段password_cofirmation 
<input type="password" name="password_confirmation" class="form-control" placeholder="重复输入密码" required>

class RegisterValidate extends Validator

{
    public static function validate($data){
        #验证字段
        $rules = [
            'name'    => 'required|between:0,30',
            'email'    => 'required|unique:users,email|email',
            'password'   => 'required|min:5|confirmed',
        ];
        #提示信息
        $messages = [
            'name.required' => '用户名不能为空',
            'name.between' => '用户名不能太长',
            'email.required' => '邮箱不能为空',
            'password.min' => '密码至少5位',
            'password.required' => '密码不能为空',
            'password.confirmed' => '两次密码不一致',
        ];
        #调用验证
        $res = Validator::make($data, $rules, $messages);
        return $res;
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值