【发布时间】:2021-12-30 23:53:58
【问题描述】:
我想知道是否可以从 Laravel 常规控制器发出事件并在 Livewire 组件上定义侦听器。到目前为止,这是我的旅程:
我已经生成了事件:
php artisan make:event NewOrder
然后,在控制器方法placeNewOrder 上,我正在触发这样的事件:
event(new NewOrder())
在 Livewire 组件上,我定义了一个变量 $showNewOrderNotification 和监听器:
public $showNewOrderNotification = false
protected $listeners = ['NewOrder' => 'notifyNewOrder'];
并设置方法notifyNewOrder
public function notifyNewOrder()
{
$this->showNewOrderNotification = true;
}
livewire 视图仅在 $showNewOrderNotification 变量为 true 时显示警报:
@if($showNewOrderNotification)
<div class="alert alert-danger text-uppercase">
New Orders !!!
</div>
@endif
这应该很简单,但由于某种原因,侦听器没有收到事件。
感谢所有帮助。
【问题讨论】:
-
不,不可能。相反,请查看一些推送器解决方案以从 laravel 控制器发出事件,从推送器获取它并使用 laravel-echo 在 livewire 中监听它。
-
为什么不将控制器转换成 Livewire 组件呢?然后你可以从那里发出它,假设两个组件(一个发射和一个监听)加载在该页面上。否则,您需要 Prospero 建议的 websocket 解决方案
标签: laravel laravel-livewire laravel-events