不知何故,我只是通过它来管理它(将数据,数组从控制器传递到视图)
return redirect('whatever')->with('arrayName', $arrayName);
在视图内部通过访问它
@if(!is_null(session('arrayName')))
<div class="alert alert-{{ session('arrayName')['something'] }} alert-dismissable">
// more code goes here
@endif
现在这似乎是一个会话,我正在使用这种技术以信息的形式传递数据(例如成功创建XY,删除,等等)(使用相同的消息数组的名称) ,现在又一次发生信息显示在不应该的页面上(因为上面的HTML在每个HTML /刀片页面内部,以便始终有机会显示消息/警报),因为它仍然存储在 Session 中 . 因此,不仅显示旧消息,它甚至是我在应用程序内部的其他位置使用的消息 .
我想知道 session()
调用是否是错误或者我是否需要刷新会话(如果是,如何,何时?)或者我刚刚搞砸了控制器和视图之间的通信,因为我已经看到了(同样here)人们在视图中访问它时使用唯一的变量名,而不是session() . 那么,这可能是一个旧的Laravel版本(我使用的是最新版本)当它只在那时工作或我错过了什么?
谢谢你的建议 .
1 回答
我有问题的是您使用
session()->put('key', 'value)
或session(['key' => 'value'])
手动存储在会话中的数据 . 当您将put()
数据输入会话时,它会一直保留到会话过期或手动忘记 .但是,如果您只希望数据保留一个响应并在此之后立即删除,则可以使用
flash()
方法 . 这就是redirect()->with()
功能的工作原理 . 您在with()
中指定的数据是会话的"flashed",因此它仅持续一个响应 .因此,只有在一次响应时才需要将代码更改为会话,或者您需要在显示后将刀片模板更新为手动
forget()
数据: