事件/侦听器中的Flash会话/事件在Laravel中触发后显示消息

时间:2020-07-22 03:11:42

标签: php laravel session events listener

我正在尝试将数据从事件/侦听器刷新到会话中,但是它不起作用:

访客可以查看页面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

但我不想使其成为“公共访问权限”。

谢谢!

0 个答案:

没有答案