我正在尝试将数据从事件/侦听器刷新到会话中,但是它不起作用:
访客可以查看页面A。用户可以删除页面A,并在发生这种情况时触发事件。该事件广播了要重定向到该访客的URL,即页面B的URL。我需要在页面B中显示一条消息,此消息提醒来宾该页面A已被删除。
这是B页的Blade的源代码:
@if (session()->has('msg'))
{{ session()->get('msg') }}
@endif
这是A页的JQuery源代码:
Echo.channel('guest')
.listen('.PageADeleted', (e) => {
window.location.href = e.redirectTo;
});
这是被触发的事件:
public $redirectTo;
public function __construct() {
session()->flash('msg', 'Page A has been deleted!');
$this->redirectTo = route('pageb');
}
我曾尝试将类似事件中的消息刷新到会话中,但这是行不通的。我也尝试使用会话外观,但仍然一无所获。我尝试放置该消息而不是闪烁它,但它仍然无法正常工作。最终,我尝试仅出于闪烁消息的目的而构造一个侦听器,但这是行不通的。
如果我将会话转储到页面B中,同时将会话转储到事件中,则该会话为空,而页面B不是。
是否有一种从事件/侦听器刷新会话的方法?万一我做不到,如何解决原来的问题?我以为在离开页面A之前发出“再见” AJAX请求,并从控制器刷新到会话,但是我认为这超出了广播的目的,我也觉得这有点过头了。我还考虑过使用显示消息的查询重定向到页面B,如下所示:
/pageb?msg=page+a+deleted
但我不想使其成为“公共访问权限”。
谢谢!