Day09-为了让表单资料不要太过自大,给予其正确的绝望-Validation(II)

标题参考来源

大家好~
如果有个表单验证需要大量重复使用的话,
我们可以为此表单验证建立一个 FormRequest class。
接下来的实作内容就用 Day05 做好的留言板表单验证当作例子吧!

建立 FormRequest

php artisan make:request MessageValidation

建立好的 FormRequest class 会在 app/Http/Requests 下喔。

实作 FormRequest

首先将 authorize()return false 改成 return true

public function authorize()
{
    return true;
}

rules()

将我们想使用的验证规则写在 rules() 这个 function 内吧!

public function rules()
{
    return [
        'title' => 'required|string|max:50',
        'content' => 'required|string|between:2,255'
    ];
}

messages()

如果有想自定义的错误讯息,
可以在我们建立的 FormRequest class 内建立一个 messages()
然後把自定义的错误讯息内容写在这个 function 内。

public function messages()
{
    return [
        'required' => ':attribute 未填。',
        'string' => ':attribute 格式不支援。',
        'between' => ':attribute 文字长度请在:min至:max间。',
        'max' => ':attribute 文字长度请在:max以内。',
    ];
}

如果是想针对一个栏位上的规则去做自定义的错误讯息,
可以在规则前面加上栏位名称,
并用 . 连接。
如:

    return [
        'title.max' => ':attribute 文字长度请在:max以内。',
    ];

关於占位符

自定义的错误讯息内有提供一些占位符供我们使用,
上面用到的 :attribute:min:max 都是占位符。
如果需要其他占位符的用法可参考官方文件

自定义错误讯息成果预览


完成後的自定义错误讯息大概是像这样子~

使用 FormRequest

先在 Controller 内 use 我们的 FormRequest class。

use App\Http\Requests\MessageValidation;

然後将原本 type-hint 的 Request 改成我们要使用的 FormRequest class,
这样传入的资料就会是做完表单验证的资料罗。
下面是用新增留言功能作为例子:

public function store(MessageValidation $request)
{
    $validated=$request->validated();

    $message = Auth::user()->messages()->create($validated);

    return response(MessageResource::make($message), Response::HTTP_CREATED);
}

今天就先这样啦,
明天来认识如何不用另外建立 FormRequest class 也能自定义错误讯息的方式吧!
大家明天见啦~
若文章有任何问题,
还请大家不吝赐教!

参考资料:


<<:  [Angular] Day24. Template-driven forms

>>:  [Day09]实习稽核常见情境

予焦啦!BSS 初始化

本节是以 Golang 上游 ee91bb83198f61aa8f26c3100ca7558d30...

DAY 9:Worker Pool Pattern,就。很。Pool。

什麽是 Worker Pool Pattern? 设定好 pool 的 goroutine 数量,预...

Day 18 服务设计中的个资隐私保护旅程

用户在使用服务的同时,其实就已经在个资隐私法规的保护之下享受服务需求,从用户第一次看到服务,到注册帐...

Day.30 讲点算法以外的东西

终於30天了(烟 第二年参赛都顺利结束,回想第一年每天都在赶QQ 今年比前年顺利!题目根本不用想要写...

Day 3 安装 RSpec 以及环境设定

该文章同步发布於:我的部落格 检查电脑是否有 Ruby 铁人赛文章主要以 Mac 作业系统为主,避...