laravel学习笔记--表单验证

Laravel表单验证与处理
这篇博客介绍了如何在Laravel框架中进行表单验证,包括在控制器中编写简单的验证逻辑,利用`validate`方法自动处理错误响应。当验证失败时,Laravel会自动重定向并存储错误信息在session中。若验证通过,控制器将继续执行。同时,文章讲解了如何创建自定义的表单请求类,将验证规则和错误消息定制化,并在控制器中通过类型提示调用此类进行验证。最后,博客提到了如何展示验证错误信息,使用`@error` Blade指令以及遍历`$errors`对象来显示错误列表。

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

$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,所以,可以使用验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小信啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值