我已经阅读了很多关于Event::queue
的内容,但我无法理解它,所以我有类似的东西:
Event::listen('send_notification');
在控制器中我使用
Event::fire('send_notification');
但是因为在将用户发送到其他地方之前需要一段时间,所以我想要使用
Event::queue('send_notification');
在重定向用户之后触发事件,但我不知道如何。
(在app/config/app.php
我将queue driver
设置为sync
)
修改
关于触发事件的小注释,您可以像平常一样完成所有工作,并将所有Event::flush()
添加为过滤器,然后通过->after()
或{{1}调用该过滤器}。
答案 0 :(得分:3)
首先,让我说清楚一点。 Event::queue
与配置中的Queue
外观和查询驱动程序无关。它不会使您在请求发生后触发事件。
但你可以延迟发射一个事件,因此“准备”它。
用法很基本。显然你需要一个或多个Event::listen
(没有它们就可以工作但根本没有意义)
Event::listen('send_notification', function($text){
// send notification
});
现在我们将事件排队:
Event::queue('send_notification', array('Hello World'));
最后,通过调用flush
Event::flush('send_notification');
在评论中,您询问了一次刷新多个事件的问题。不幸的是,这不太可能。您必须多次致电flush()
Event::flush('send_notification');
Event::flush('foo');
Event::flush('bar');
如果你有很多要冲洗的事件,你可能需要考虑你的体系结构,以及是否可以将其中一些事件与多个监听器合并为一个事件。
Event::queue
不能用于触发事件。你必须使用"real" queues。