Laravel - 驗證:初學者的全面指南

你好啊,有抱負的開發者們!今天,我們將踏上一段令人興奮的旅程,進入 Laravel 驗證的世界。作為你們友好的鄰居計算機科學老師,我在這裡指引你們走過這個網頁開發的重要部分。如果你是編程新手,別擔心——我們會從基礎開始,逐步提升。那麼,來一杯咖啡(或者如果你喜歡,來一杯茶),我們一起來深入探究吧!

Laravel - Validation

驗證是什麼,我們為什麼需要它?

在我們深入 Laravel 驗證的細節之前,讓我們先來討論一下為什麼驗證在網頁開發中至關重要。想像一下,你經營著一家咖啡店,顧客們正在填寫一個加入忠誠計劃的表單。你會想要確保他們提供的信息是有效的,對吧?這正是網頁應用程序中驗證的作用——它確保用戶提交的數據符合特定的標準。

驗證幫助我們:

  1. 保持數據完整性
  2. 提升用戶體驗
  3. 防止潛在的安全風險

現在我們理解了驗證的重要性,讓我們看看 Laravel 如何讓這個過程變得輕鬆!

Laravel 驗證入門

Laravel,我們的超級英雄框架,帶來了一套強大的驗證系統,它既容易使用又高度靈活。這就像在你數據的大門前有一個警覺的保鏢,確保只有正確的信息能夠通過。

基本驗證範例

讓我們從一個簡單的範例開始。想像我們正在為我們咖啡店的忠誠計劃創建一個註冊表單。以下是我們如何驗證傳入的數據:

public function store(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'age' => 'required|integer|min:18',
]);

// 處理已驗證的數據
}

在這個範例中,我們使用了 $request 對象提供的 validate 方法。讓我們分解一下發生了什麼:

  • 'name' => 'required|string|max:255':名稱字段是必填的,必須是字符串,且不能超過 255 個字符。
  • 'email' => 'required|email|unique:users':電子郵件必須提供,必須是有效的電子郵件格式,並且在用戶表中是唯一的。
  • 'age' => 'required|integer|min:18':年齡是必填的,必須是整數,且最小值為 18。

如果驗證通過,則返回已驗證的數據。如果失敗,Laravel 會自動將用戶重定向回前一頁,並顯示錯誤信息。

Laravel 中的可用驗證規則

Laravel 提供了各種各樣的驗證規則以滿足不同的需求。讓我們看看一些最常見的規則:

規則 描述
required 字段必須存在且不為空
string 字段必須是字符串
integer 字段必須是整數
numeric 字段必須是數字
email 字段必須是有效的電子郵件地址
unique:table,column 字段必須在指定的數據庫表中是唯一的
min:value 字段必須有最小值或長度
max:value 字段必須有最大值或長度
date 字段必須是有效的日期
confirmed 字段必須有一個匹配的字段 {field}_confirmation

這些只是少數幾個例子。Laravel 提供了更多的規則以涵蓋你可能遇到的幾乎任何驗證情景。

自定義驗證信息

有時候,默認的錯誤信息可能不符合你應用程序的风格。別擔心!Laravel 允許你自定義這些信息。以下是如何操作:

$messages = [
'name.required' => '嘿,我們很樂意知道你的名字。',
'email.unique' => '哦哦!看起來這個電子郵件已經被使用了。',
'age.min' => '對不起,你必須年滿 18 歲才能加入我們的忠誠計劃。',
];

$validatedData = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'age' => 'required|integer|min:18',
], $messages);

通過將第二個參數傳遞給 validate 方法,我們可以為每個規則提供自定義的錯誤信息。這讓我們能夠使應用程序更加用戶友好和品牌化。

表單請求驗證

隨著你的應用程序增長,你可能會發現自己在多個控制器方法中重複驗證邏輯。這時,表單請求驗證就派上用場了!這就像為你應用程序中的每種表單創造一個專門的安全警衛。

以下是如何創建一個表單請求:

php artisan make:request StoreLoyaltyMemberRequest

這個命令創建了一個新的請求類。讓我們在其中填充我們的驗證規則:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreLoyaltyMemberRequest extends FormRequest
{
public function authorize()
{
return true;
}

public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'age' => 'required|integer|min:18',
];
}

public function messages()
{
return [
'name.required' => 'Hey there! We\'d love to know your name.',
'email.unique' => 'Oops! Looks like this email is already in use.',
'age.min' => 'Sorry, you must be at least 18 to join our loyalty program.',
];
}
}

現在,在你的控制器中,你可以像這樣使用這個表單請求:

public function store(StoreLoyaltyMemberRequest $request)
{
// 進入的請求是有效的...

// 檢索已驗證的輸入數據...
$validated = $request->validated();

// 處理數據...
}

這種方法使你的控制器保持清晰,並且你的驗證邏輯組織有序且可重用。

結論

好了,各位!我們已經完成了 Laravel 驗證基礎的旅程,從簡單規則到自定義信息以及表單請求。記住,驗證不僅僅是關於保持你的數據乾淨——它還是為你的應用程序訪客創造一個順暢、用戶友好的體驗。

在你繼續你的 Laravel 冒險時,你會發現更多強大的驗證技巧。但現在,有了這些知識,你已經有足夠的能力在 Laravel 應用程序中創建堅固、用戶友好的表單。

持續練習,保持好奇心,並且開心編程!記住,在網頁開發的世界裡,一個良好的驗證表單抵得上千個錯誤修復。直到下次,這個你們友好的鄰居計算機科學老師,這就結束了!

Credits: Image by storyset