废话不多说,直接开始
- 生成规则对象
php artisan make:rule Phonecase
- 打开
app/Rules/Phonecase.php
,passes方法里边写验证规则,验证通过返回true,否则返回false,message方法里写验证失败后返回的信息<?php namespace App\Rules; use App\User; use Illuminate\Contracts\Validation\Rule; class Phonecase implements Rule { /** * Create a new rule instance. * * @return void */ public function __construct() { // } /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value) { //判断输入的手机号是否存在 $user = User::where('phone_number',$value)->get(); if(count($user) == 0){ return false; }else{ return true; } } /** * Get the validation error message. * * @return string */ public function message() { return '手机号尚未注册'; } }
- 在控制器里边这么用
public function login(Request $request){ //获取表单输入 $phone = $request->input('phone'); $password = $request->input('password'); //创建验证器 $validator = Validator::make($request->all(), [ 'phone' => ['required', new Phonecase], ]); if ($validator->fails()) { return redirect('/login') ->withErrors($validator) ->withInput(); } //获取用户信息 $user = User::where('phone_number',$phone)->first(); //数据库中取的密码 $pass = $user->password; $str = Hash::make($pass); if (Hash::check($password, $pass)) { Auth::login($user); return redirect('/'); }else{ return redirect('/login') ->with('message','密码错误') ->withInput(); } }
- 前端显示页面
<div class="form-group row"> <label for="phone" class="col-md-4 col-form-label text-md-right">{{ __('手机号') }}</label> <div class="col-md-6"> <input id="phone" type="text" class="form-control @error('phone') is-invalid @enderror" name="phone" value="{{ old('phone') }}" required autocomplete="phone" autofocus> @error('phone') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div>