Laravel中控制器数据无法传递至视图问题排查
问题原因及解决方法
重定向时用
with()传递的数据是存在Session闪存中的,不是直接作为视图变量注入的,所以你直接在视图里调用$data肯定拿不到。解决方法:
- 直接在视图中从Session读取数据:
也可以用Facade方式读取:@dump(session('data') ?? '')@dump(\Illuminate\Support\Facades\Session::get('data') ?? '') - 若希望把Session数据转为视图变量,可在编辑页面对应的控制器方法里手动取出并传递:
public function edit(Prop $prop) { $data = session('data') ?? []; return view('admin.my-view.edit', compact('prop', 'data')); }
- 直接在视图中从Session读取数据:
补充说明:
- Laravel的
redirect()->with()本质是闪存Session,数据仅在下一次请求中有效,刷新页面后数据会自动清除,这是框架的正常设计。 - 初始加载编辑页面时,本来就没有
data相关数据,所以显示空字符串是合理的,只有重定向过来的请求才会携带该Session数据。
- Laravel的
内容的提问来源于stack exchange,提问作者devsead
相关产品推荐
相关产品推荐

