laravel表单请求验证

目录

1,使用 Artisan 命令 make:request 来创建表单请求类

2,生成文件

3,演示:

4,错误提示

5,常用验证规则


表单请求验证是 Laravel 框架提供的用户表单数据验证方案,此方案相 比手工调用  validator  来说,能处理更为复杂的验证逻辑,更加适用于大型程序

1,使用 Artisan 命令 make:request 来创建表单请求类

 php artisan make:request UserRequest

2,生成文件

执行后会在Http\Requests文件夹下生成UserRequest.php

工作机制:是利用 Laravel 提供的依赖注入功能,在控 制器方法声明中,传参 UserRequest。这将触发表单请 求类的自动验证机制,验证发生在 UserRequest 中,并使用此文件中方法  rules() 定制的规则

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UserRequest extends FormRequest
{
    /**
     表单验证自带的另一个功能 —— 权限验证
     return true,意味所有权限都可以通过
     **/
    public function authorize()
    {
        return false;
    }

    /**
     只有当验证通过时,才会执行控制器方法中的代码。否则抛出异 常,并重定向至上一个页面,附带验证失败的信息
     **/
    public function rules()
    {
        return [
            //
        ];
    }
}

3,演示:

public function rules()
    {
        /*unique:users,name,'. Auth::id()忽略掉当前登录的用户名重复*/
        return [
            'name' => 'required|between:3,25|regex:/^[A-Za-z0-9\-\_]+$/|unique:users,name,'.Auth::id(),
            'email' => 'required|email',
        ];
    }

控制器:

public function update(UserRequest $request,User $user){
		$user->update($request->all());
		return redirect()->route('users.show',$user->id)->with('sucess','信息修改成功');
	}

表单:

<form action="{{ route('users.update', $user->id) }}" method="POST">
            <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

4,错误提示

             @if (count($errors) > 0) 
            <div>   
                <div>
                    <b style="color: red;">有错误发生:</b>
                </div>   
                <ul>     
                    @foreach ($errors->all() as $error)     
                    <li style="color: red;">
                    {{ $error }}
                    </li>     
                    @endforeach   
                </ul> 
            </div> 
            @endif

提示优化:

public function messages(){
        return [             
            'name.unique' => '用户名已被占用,请重新填写',
            'name.regex' => '用户名只支持英文、数字、横杠和下划线。',
            'name.between' => '用户名必须介于 3 - 25 个字符之间。',
            'name.required' => '用户名不能为空。',
        ];     
    }

5,常用验证规则

  • required------验证的字段必须存在于输入数据中,而不是空
  • regex:pattern------验证的字段必须与给定的正则表达式匹配。注意: 当使用 regex 规则时,你必须使用数组,而不是使用 | 分隔符,特别是如果正则表达式包含 | 字符。
  • between:min,max------验证字段的大小必须在给定的 min 和 max 之间。字符串、数字、数组和文件的计算方式都使用 size方法
  • email------验证字段必须为正确格式的电子邮件地址
  • unique:table,column,except,idColumn------验证的字段在给定的数据库表中必须是唯一的。如果没有指定 column ,将会使用字段本身的名称
  • max:value------验证中的字段必须小于或等于 value
  • array------验证的字段必须是一个 PHP 数组
  •  dimensions-------Laravel 5.3 中,新增了图片尺寸验证规则。可以传递以下参数到验证规则,min_width:宽度比这个尺寸小的图片将会被拒绝,max_width:宽度比这个尺寸大的图片将会被拒绝,min_height:高度比这个尺寸小的图片将会被拒绝,max_height:高度比这个尺寸大的图片将会被拒绝
发布了107 篇原创文章 · 获赞 18 · 访问量 6334

猜你喜欢

转载自blog.csdn.net/qq_43109978/article/details/99701608