iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
Software Development

Laravel 新手初見 API系列 第 10

Day10-為了讓表單資料不要太過自大,給予其正確的絕望-Validation(III)

標題參考來源

大家好~
今天來認識如何自定義錯誤訊息且不用另外建立 FormRequest class 的方式吧~

Validator::make

Validator::make() 可以接受四個參數,
依序是:

  1. 要驗證的資料
  2. 驗證規則
  3. 自定義錯誤訊息
  4. 自定義屬性

定義驗證規則

$rules=[
    'title' => 'required|string|max:50',
    'content' => 'required|string|between:2,255'
];

自定義錯誤訊息

$messages = [
    'required' => ':attribute 未填。',
    'string' => ':attribute 格式不支援。',
    'between' => ':attribute 文字長度請在:min至:max間。',
    'title.max' => ':attribute 文字長度請在:max以內。',
];

如何使用?

Validator::make($request->all(), $rules, $messages)->validate();

將我們定義好的參數依序放入即可~

Day05 我們完成的新增留言功能為例,
完整程式看起來會像這樣:

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

    $messages = [
        'required' => ':attribute 未填。',
        'string' => ':attribute 格式不支援。',
        'between' => ':attribute 文字長度請在:min至:max間。',
        'title.max' => ':attribute 文字長度請在:max以內。',
    ];

    $validated = Validator::make($request->all(), $rules, $messages)->validate();

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

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

然後來測試看看吧~
下圖就是剛剛我們自定義的錯誤訊息喔!

小結

  1. Laravel Validation 提供許多驗證規則,供我們可以簡單快速的實作表單驗證。
  2. 如果有重複利用的表單驗證,可以另外建立 FormRequest class。這樣程式看起來更簡潔,修改更方便。
  3. 如果想要更彈性的設計表單驗證,但該表單驗證不會重複利用,可以考慮使用 Validator::make()

那麼關於 Validation 的部分差不多就這樣啦~
今天差不多先這樣啦!
大家明天見啦~
若文章有任何問題,
還請大家不吝賜教!

參考資料:


上一篇
Day09-為了讓表單資料不要太過自大,給予其正確的絕望-Validation(II)
下一篇
Day11-Database——效能的儲備足夠嗎?-N+1 query
系列文
Laravel 新手初見 API30

尚未有邦友留言

立即登入留言