Laravel 8如何通过with()方法向Blade模板传递数组并成功访问?
Laravel 8 重定向后Blade读取闪存数组的正确方法
问题原因
你用redirect()->back()->with()传递的数据属于session闪存数据,不会直接作为全局变量挂载到Blade视图,需要从session中读取;另外你直接传递数组到with()的写法会将数组拆分为多个独立键值对存入闪存,不会生成datainsert这个集合键。
方案1:保留原控制器传参写法的读取方式
你当前的with($datainsert)写法等效于分别存储website和name两个独立的闪存项,Blade中直接读取对应键即可:
{{ session('name') }} {{ session('website') }} {{-- 成功提示也用相同逻辑读取 --}} {{ session('success') }}
方案2:按原需求传递整个datainsert数组
如果要把整个数组作为一个集合传递,先修正控制器的传参写法,给数组指定键名:
return redirect()->back() ->with('success', 'Successfully Inserted') ->with('datainsert', $datainsert); // 给数组指定键名
Blade中读取逻辑如下,建议先做存在性判断避免报错:
@if(session()->has('datainsert')) <p>用户名:{{ session('datainsert.name') }}</p> <p>站点地址:{{ session('datainsert.website') }}</p> @endif {{-- 也可以用数组语法访问 --}} {{ session('datainsert')['name'] }}
补充说明
重定向时通过with()传递的所有数据都属于一次性session闪存,仅在下一次请求有效,访问完成后会自动销毁,完全适配当前操作后返回提示的场景。
内容的提问来源于stack exchange,提问作者Emanuel
相关产品推荐
相关产品推荐

