Laravel - 表單:初學者指南

你好,有抱負的開發者們!作為一位有多年經驗的計算機科學老師,我非常高興能夠引導你們進入 Laravel 表單的精彩世界。如果你是編程新手,別擔心——我們會從基礎開始,逐步學習。在本教程結束時,你將能夠像專業人士一樣創建表單!

Laravel - Forms

Laravel 表單是什麼?

在我們深入代碼之前,讓我們先了解 Laravel 表單是什麼。想像你在網上填寫一份工作申請——那就是表單!在網頁開發中,表單是我們從用戶那裡收集信息的工具。我們親愛的 PHP 框架 Laravel,讓創建和處理這些表單變得非常簡單。

為什麼使用 Laravel 來創建表單?

你可能會想,"為什麼要用 Laravel?" 讓我給你講一個小故事。當我還是一個年輕的開發者時(是的,那時還有恐龍在地球上漫步),創建表單是一個冗長的過程。但 Laravel 像超級英雄一樣出現,用它的強大工具和安全特性,讓我們的生活變得更加輕鬆。

開始

首先,確保你的系統上已經安裝了 Laravel。如果你還沒有安裝,別擔心!只需按照 Laravel 官方安裝指南操作,你很快就能夠運行起來。

示例 1:創建一個簡單的聯繫表單

我們從一個簡單的聯繫表單開始。我們將創建一個表單,要求填寫姓名、電子郵件和消息。

步驟 1:創建路由

打開 routes 文件夾中的 web.php 檔案,並添加以下這行代碼:

Route::get('/contact', 'ContactController@showForm');

這告訴 Laravel,當有人訪問 '/contact' URL 時,顯示我們的聯繫表單。

步驟 2:創建控制器

在終端中運行以下命令:

php artisan make:controller ContactController

現在,打開新創建的 ContactController.php 檔案,並添加以下方法:

public function showForm()
{
return view('contact');
}

這個方法將返回我們的聯繫表單視圖。

步驟 3:創建視圖

resources/views 文件夾中創建一個名為 contact.blade.php 的新文件,並添加以下代碼:

<form action="/submit-contact" method="POST">
@csrf
<div>
<label for="name">姓名:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">電子郵件:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="message">消息:</label>
<textarea id="message" name="message" required></textarea>
</div>
<button type="submit">發送</button>
</form>

讓我們分解一下:

  • @csrf 是一個 Laravel 指令,它添加了一個隱藏的令牌以防止跨站請求偽造攻擊。把它看作是表單和 Laravel 之間的秘密握手。
  • 我們創建了姓名、電子郵件和消息的輸入字段。
  • required 屬性確保用戶在提交之前填寫所有字段。

步驟 4:處理表單提交

web.php 中添加一個新路由:

Route::post('/submit-contact', 'ContactController@submitForm');

然後,在 ContactController 中添加以下方法:

public function submitForm(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email',
'message' => 'required',
]);

// 處理表單數據(例如,保存到數據庫,發送電子郵件)

return redirect('/contact')->with('success', '感謝您的消息!');
}

這個方法驗證表單數據,並重定向回到聯繫頁面,顯示一條成功消息。

示例 2:創建一個註冊表單

現在我們已經熱身了,讓我們來創建一個更複雜的註冊表單。

步驟 1:創建路由

web.php 中添加以下內容:

Route::get('/register', 'RegisterController@showForm');
Route::post('/register', 'RegisterController@register');

步驟 2:創建控制器

運行以下命令:

php artisan make:controller RegisterController

RegisterController 中添加以下方法:

public function showForm()
{
return view('register');
}

public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
'date_of_birth' => 'required|date',
'gender' => 'required|in:male,female,other',
]);

// 在這裡創建用戶邏輯

return redirect('/register')->with('success', '註冊成功!');
}

步驟 3:創建視圖

在你的視圖文件夾中創建一個名為 register.blade.php 的新文件:

<form action="/register" method="POST">
@csrf
<div>
<label for="name">姓名:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">電子郵件:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="password">密碼:</label>
<input type="password" id="password" name="password" required>
</div>
<div>
<label for="password_confirmation">確認密碼:</label>
<input type="password" id="password_confirmation" name="password_confirmation" required>
</div>
<div>
<label for="date_of_birth">出生日期:</label>
<input type="date" id="date_of_birth" name="date_of_birth" required>
</div>
<div>
<label>性別:</label>
<input type="radio" id="male" name="gender" value="male" required>
<label for="male">男性</label>
<input type="radio" id="female" name="gender" value="female">
<label for="female">女性</label>
<input type="radio" id="other" name="gender" value="other">
<label for="other">其他</label>
</div>
<button type="submit">註冊</button>
</form>

這個表單包含了各種輸入類型:文本、電子郵件、密碼、日期和單選按鈕。

表單驗證方法

這裡是一個常見的 Laravel 驗證方法表格:

方法 描述
required 欄位不能為空
email 必須是有效的電子郵件地址
max:value 最大長度
min:value 最小長度
unique:table 必須在指定的數據庫表中是唯一的
confirmed 必須有一個匹配的字段(例如,password_confirmation)
date 必須是有效的日期
in:foo,bar,... 必須是列出的值之一

結論

恭喜你!你剛剛創建了兩個 Laravel 表單並學會了如何處理它們。記住,熟練使人完美,所以請繼續嘗試不同的表單類型和驗證規則。

在我們結束時,讓我分享一個小故事。我曾經有一個學生,他非常害怕表單——他認為它們是複雜而神秘的東西。但經過幾節課後,他開始為樂趣而創建表單!這就是 Laravel 的美妙之處——它將複雜的事物變得愉快。

繼續編碼,保持好奇心,並不怕提問題。愉快的表單創建!

Credits: Image by storyset