Laravel - 表单:初学者指南
你好,有抱负的开发者们!作为一名拥有多年教学经验的计算机科学老师,我很高兴能引导你们进入Laravel表单的精彩世界。如果你是编程新手,不用担心——我们将从基础开始,逐步深入。在本教程结束时,你将能够像一个专业人士一样创建表单!
Laravel 表单是什么?
在我们深入代码之前,先来了解一下Laravel表单是什么。想象一下你在网上填写一份工作申请——那就是表单!在网页开发中,表单是我们收集用户信息的方式。Laravel,我们友好的PHP框架,使得创建和处理这些表单变得轻而易举。
为什么使用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 | 字段不能为空 |
必须是一个有效的电子邮件地址 | |
max:value | 最大长度 |
min:value | 最小长度 |
unique:table | 必须在指定的数据库表中唯一 |
confirmed | 必须有一个匹配的字段(例如,password_confirmation) |
date | 必须是一个有效的日期 |
in:foo,bar,... | 必须是列出的值中的一个 |
结论
恭喜你!你已经创建了两个Laravel表单并学会了如何处理它们。记住,熟能生巧,所以继续尝试不同的表单类型和验证规则。
在我们结束之前,让我分享一个小故事。我曾经有一个学生,他对表单感到非常害怕——他认为它们是复杂而神秘的。但经过几节课后,他开始为了乐趣而创建表单!这就是Laravel的美妙之处——它把复杂的事情变得愉快。
继续编码,保持好奇心,永远不要害怕提问。快乐构建表单!
Credits: Image by storyset