laravel使用validator验证

laravel使用validator验证

该教程使用的是captcha包,参考网址


1.编写表单

<form action="{{ url('admin/login') }}" method="post">
	{{ csrf_field() }}
	<ul>
		<li>
		<input type="text" name="username" class="text"/>
			<span><i class="fa fa-user"></i></span>
		</li>
		<li>
			<input type="password" name="password" class="text"/>
			<span><i class="fa fa-lock"></i></span>
		</li>
		<li>
			<input type="text" class="code" name="captcha"/>
			<span><i class="fa fa-check-square-o"></i></span>
			<img src="{{captcha_src()}}" onclick="this.src='/captcha/default?'+Math.random()">
		</li>
		<li>
			<input type="submit" value="立即登陆"/>
		</li>
	</ul>
</form>

/*其中的onclick是为了点击验证码再刷新的验证码;laravel的任何请求都是url请求;*/

2.编写controller

public function login(Request $request){

        if ($request->method() == 'POST'){

            $this->validate($request,[
                'username'=> 'required|min:1', //这边是验证规则,比如require是必填,用|符号隔开
                'password'=> 'required|min:1',
                'captcha'=> 'required|captcha',
            ],[
                'required' => ' :attribute 不能为空.',//这边是自定义消息,本来是英文,自定义改为中文
                'captcha' => ' :attribute 错误.',
                'min' => ' :attribute 长度不足.',
            ],[
                'username'=>'用户名',//这边是对字段变为中文
                'password'=>'密码',
                'captcha'=>'验证码',
            ]);//验证不通过的时候会跳回上个请求,也就是get到login

            //验证用户名密码是否符合->数据库

            //记录session

            return view('admin.index');
        }
        return view('admin.login');
    }

3.路由示例

Route::group(['middleware'=>'adminlogin','namespace'=>'Admin','prefix'=>'admin'],function (){

    Route::match(['get','post'],'/login','LoginController@login');

});

再介绍个别的验证码类,不是使用composer的

API验证表单

$validator = Validator::make($request->all(), [
            'nickname' => [
                'required',
                Rule::unique('users')->ignore($user->id),
            ],
            'email' => [
                'email',
                Rule::unique('users')->ignore($user->id)
            ],
        ],[
            'nickname.required'=>'缺少昵称',
        ]);


if (!$validator->passes()){ // passes方法判断验证是否通过
            return $this->failure(0,$validator->errors());
}

如果是更新用户资料的话,有碰到字段唯一性问题,可以用unique
最后修改:2019-05-27 12:15:56
0