laravel自定义表单验证规则

废话不多说,直接开始

  1. 生成规则对象
    php artisan make:rule Phonecase
    
  2. 打开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 '手机号尚未注册';
    	}
    }
    
    
  3. 在控制器里边这么用
    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();
        }
    }
    
  4. 前端显示页面
    <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>
    

猜你喜欢

转载自blog.csdn.net/qq_42094066/article/details/104214753