iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
自我挑戰組

我推的Laravel系列 第 9

【Day- 8】我推的Laravel-基礎篇-Validation (輸入資料驗證)

  • 分享至 

  • xImage
  •  

簡介

Validate是Laraval針對使用者傳入的資料進行資料檢驗,以提醒使用者、避免程式錯誤,也有部分資安考量
如果接續上次的比喻,Validate就是使用者在要求餐點時,如果有不符合本餐廳所提供的,或不符合本餐廳所要求的,則拒絕使用者的點餐

以下簡單用上篇寫好的來進行資料驗證

Validation

以store為例:
app\Http\Controllers\PostController.php
https://ithelp.ithome.com.tw/upload/images/20230923/20163286MSANQX9nP4.png

public function store(){
    // Post::create(request()->only(array('title', 'content')));
    $data = request()->validate([
        'title' => 'required',
        'content' => 'required|min:10'
    ]);
    Post::create($data);
    return redirect('posts');
}

resources\views\posts\create.blade.php
https://ithelp.ithome.com.tw/upload/images/20230923/20163286i3DHZizug3.png

<form action="/posts" method="post">
    @csrf
    <div class="title">
        <input type="text" name="title" id="" value="{{ old('title') }}">
        <div class="error">
            {{ $errors->first('title')}}
        </div>
    </div>
    <div class="content">
        <textarea name="content" id="" cols="30" rows="10">{{ old('content') }}</textarea>
        <div class="error">
            {{ $errors->first('content')}}
        </div>
    </div>
    <button type="submit">Create</button>
</form>

這樣如果我在新增的時候都沒有輸入就會有提示囉
https://ithelp.ithome.com.tw/upload/images/20230923/20163286qXZk4YNzdD.png

old('content')

這個能讓使用者輸入錯誤資料時,保留資料讓使用者做更改

API Validation

https://ithelp.ithome.com.tw/upload/images/20230923/20163286CQcRKgddI0.png

記得上方要引用

use Illuminate\Support\Facades\Validator;

store()

$data = request()->only(array('title', 'content'));
$validator = Validator::make($data,
[
    'title' => 'required',
    'content' => 'required|min:10'
]);

if ($validator->fails()) {
    return response()->json(['errors' => $validator->errors()], 422);
}

Postman測試:
https://ithelp.ithome.com.tw/upload/images/20230923/20163286Ruo38xTn7i.png

HTTP Code(狀態碼)

HTTP 狀態碼是用來通知客戶端網絡請求的結果。它們提供了一種標準化的方式,讓伺服器能夠將有關請求處理結果的信息傳遞給客戶端。這有助於客戶端了解伺服器對其請求的回應,並採取適當的操作

422 是常見的用於處理驗證錯誤的狀態碼
其他常見:

  • 200 OK:請求成功。伺服器已成功處理請求並返回所需的數據。
  • 201 Created:請求成功,並且伺服器已成功創建新的資源。通常用於 POST 請求創建新的資源。
  • 204 No Content:請求成功,但伺服器沒有返回內容。通常用於成功的 DELETE 請求。
  • 400 Bad Request:請求無效或無法理解。伺服器無法處理客戶端的請求。
  • 401 Unauthorized:未經授權,需要驗證。用於需要驗證但未提供有效驗證信息的請求。
  • 403 Forbidden:禁止訪問。伺服器理解請求,但拒絕執行它。
  • 404 Not Found:資源未找到。請求的資源不存在於伺服器上。
  • 500 Internal Server Error:伺服器遇到內部錯誤,無法完成請求。
  • 503 Service Unavailable:服務不可用。通常是由於伺服器過載或維護而導致的
  • 302 Found (重定向):用於指示客戶端需要重定向到另一個 URL。這是一種重定向狀態碼。

總結

Validate是非常常用的方法之一,除了可以驗證資料,也可以自訂錯誤時訊息
驗證方法也很多樣,可以依照自己的需求去做調整


上一篇
【Day-7】我推的Laravel-基礎篇-MVC的V
下一篇
【Day- 9】我推的Laravel-基礎篇-Middlware
系列文
我推的Laravel31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言