每个引用都需要存储在DB表行中.接收推荐的客户应该看到该活动的通知.
创建新的推荐并发送事件:
$totalRefers = []; foreach ($array as $to) { $refer = new ClientReferral; $refer->user_id = $user_id; $refer->by = $by; $refer->to = $to; $refer->save(); array_push($totalRefers,$refer); ReferralSent::dispatch($refer); // Here is the Event } return response()->json([ 'status' => 'Success','message' => 'Client referred successfully to selected professionals.','data' => $totalRefers ],200);
事件broadcastOn()方法:
public function broadcastOn() { return new PrivateChannel('referral.' . $this->referral->id); }
这个频道:
Broadcast::channel('referral.{id}',function ($user,$id) { // let's say it's true for the time being return true; });
并且请求是一个Ajax POST,所以在成功回调中:
console.log('referral created'); res.data.forEach(function(entry) { // window.custom.userId is the authenticated user ID: if (entry.refer_to == window.custom.userId) { window.Echo.private('referral.' + entry.id).listen('ReferralSent',({data}) => { console.log('You have received a new referral'); }); } });
现在当前代码的问题是接收器无法订阅此通道,因为事件是动态创建的,并且我不能将通道名称设置为静态,因为引用是在运行时进行的.
接收方如何订阅和收听动态事件?
有了这个逻辑,我想得到特定的推荐及其数据,以便在HTML的通知栏中显示它.
我怎样才能做到这一点?