基于Laravel实现用户信息收集表单及跨页展示的问题
完成Laravel用户信息收集与展示的后续步骤
1. 配置路由
在routes/web.php中添加对应路由,分别负责显示表单、处理提交请求、展示用户信息:
// 显示表单页面 Route::get('/register', function () { return view('register'); })->name('register'); // 处理表单提交 Route::post('/register', [UserInfoController::class, 'store']); // 展示用户信息页面 Route::get('/user-info', [UserInfoController::class, 'show'])->name('user-info');
2. 创建控制器
首先通过Artisan命令生成控制器:
php artisan make:controller UserInfoController
打开app/Http/Controllers/UserInfoController.php,编写处理逻辑:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserInfoController extends Controller { // 处理表单提交,暂存数据到会话(无需持久化时用此方式) public function store(Request $request) { // 可选:添加表单验证,确保数据合法性 $validated = $request->validate([ 'name' => 'required|string|max:255', 'surname' => 'required|string|max:255', 'phone' => 'required|string|max:20', 'email' => 'required|email|max:255', ]); // 将验证后的数据存入会话,传递到展示页面 session()->put('user_info', $validated); // 重定向到展示页面 return redirect()->route('user-info'); } // 展示收集到的用户信息 public function show() { $userInfo = session()->get('user_info'); // 若没有数据,返回表单页面 if (!$userInfo) { return redirect()->route('register'); } return view('user-info', compact('userInfo')); } }
3. 创建信息展示视图
在resources/views目录下新建user-info.blade.php,用于渲染用户信息:
<!DOCTYPE html> <html> <head> <title>Submitted User Information</title> </head> <body> <h1>Your Submitted Details</h1> <ul> <li><strong>Name:</strong> {{ $userInfo['name'] }}</li> <li><strong>Surname:</strong> {{ $userInfo['surname'] }}</li> <li><strong>Phone Number:</strong> {{ $userInfo['phone'] }}</li> <li><strong>E-mail:</strong> {{ $userInfo['email'] }}</li> </ul> <p><a href="/register">Submit another entry</a></p> </body> </html>
可选:持久化数据到数据库
如果需要长期保存用户信息,可添加数据库存储逻辑:
- 生成迁移文件:
php artisan make:migration create_user_infos_table
- 在迁移文件中定义字段:
public function up() { Schema::create('user_infos', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('surname'); $table->string('phone'); $table->string('email'); $table->timestamps(); }); }
- 运行迁移:
php artisan migrate
- 生成模型:
php artisan make:model UserInfo
- 修改控制器
store和show方法:
public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'surname' => 'required|string|max:255', 'phone' => 'required|string|max:20', 'email' => 'required|email|max:255', ]); // 将数据存入数据库 $userInfo = \App\Models\UserInfo::create($validated); return redirect()->route('user-info', ['id' => $userInfo->id]); } public function show($id) { $userInfo = \App\Models\UserInfo::findOrFail($id); return view('user-info', compact('userInfo')); }
- 更新路由:
Route::get('/user-info/{id}', [UserInfoController::class, 'show'])->name('user-info');
内容的提问来源于stack exchange,提问作者Murat Eren
相关产品推荐
相关产品推荐

