Laravel 9中如何实现Contact到About页面的Session数据传递与显示?
解决Laravel 9中Session数据无法在About视图显示的问题
核心问题与修复步骤
1. 修正控制器saveData方法,确保Session持久化
Laravel的Session数据会在响应发送时才完成持久化,若saveData仅设置Session却不返回响应,数据可能无法正确存储。修改方法如下:
public function saveData(Request $request){ $request->session()->put('name', $request->nameFull); // 重定向到about页面,触发Session存储 return redirect()->route('about'); }
同时给路由命名,方便跳转维护:
// web.php Route::get('contact', 'App\Http\Controllers\controllerPage@contact')->name('contact'); Route::post('contact', 'App\Http\Controllers\controllerPage@saveData')->name('contact.save'); Route::get('about', 'App\Http\Controllers\controllerPage@about')->name('about');
2. 检查Contact视图表单的正确性
确保表单提交字段、请求方式及CSRF验证正确:
<form method="POST" action="{{ route('contact.save') }}"> @csrf <input type="text" name="nameFull" placeholder="输入你的名字"> <button type="submit">提交</button> </form>
- 必须添加
@csrf,否则Laravel会拦截POST请求。 - 输入框
name属性需与控制器中$request->nameFull一致。
3. 修复About视图的标签错误
原视图中<h2>标签未闭合,修正后:
<h2>Welcome to our site : {{ $name }}</h2>
4. 可选:使用Session辅助函数简化代码
设置Session:
session(['name' => $request->nameFull]);
获取Session:
$name = session('name', 'no data');
验证流程
- 访问
/contact页面,输入名字提交表单。 - 页面将自动重定向至
/about,此时应能看到输入的名字正常显示。
内容的提问来源于stack exchange,提问作者LaWiss
相关产品推荐
相关产品推荐

