laravel学习笔记--表单验证

首先编写一个最简单的验证,写在控制器里面

$validatedData = $request->validate([
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ]);

所需的验证规则传递至 validate 方法中。如果验证失败,会自动生成一个对应的响应。如果验证通过,那我们的控制器会继续正常运行

显示验证错误信息

如果传入的请求参数未通过给定的验证?Laravel 会自动将用户重定向到之前的位置。另外,所有的验证错误信息会自动存储到 闪存
session 中

错误信息可以从errors中去取出来,发生的错误信息总是存储到errors中的

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

也使用 @error Blade 指令方便地检查给定的属性是否存在验证错误信息。在 @error 指令中,可以输出 $message 变量以显示错误信息

<label for="title">Post Title</label>

<input id="title" type="text" class="@error('title') is-invalid @enderror">

@error('title')
    <div class="alert alert-danger">{{ $message }}</div>
@enderror

验证表单请求

面对更复杂的情况,您可以创建一个「表单请求」来应对更复杂的验证逻辑。表单请求是一个包含了验证逻辑的自定义请求类。

就是说,一般验证都是写在表单请求类里面的,除非它很少,就可以写在控制器里面

创建一个表单请求类

php artisan make:request UserRequest

该命令生成的类将被置于 app/Http/Requests 目录中。如果这个目录不存在,在您运行 make:request
命令后将会创建这个目录

验证规则都写到到 rules 方法中

public function rules()
    {
        return [
            'name' => 'required|min:4|max:32',
            'email' => 'required|email'
        ];
    }

自定义的错误消息写到message方法中

/**
     * 获取已定义验证规则的错误消息
     *
     * @return array
     */
    public function messages()
    {
        return [
            'name.required' => '用户名不得为空',
            'name.min' => '用户名不得小于四位',
            'name.max' => '用户名不得大于32位',
            'email.required' => '邮箱必须填写',
            'email.email' => '请填写正确的邮箱格式',
        ];
    }

验证规则是如何运行的呢?就是在控制器方法中类型提示传入的请求。在调用控制器方法之前验证传入的表单请求,这意味着不需要在控制器中写任何验证逻辑

public function infoUpdate(UserRequest $request)
    {}

这个UserRequest 就是定义的验证类,他继承了FormRequest,然后FormRequest又继承了Request,所以,可以使用验证

posted @ 2022-11-20 01:50  小信吖  阅读(192)  评论(0)    收藏  举报