Сценарий: Клиент может направить клиента к другому клиенту.
Каждый реферал должен храниться в строке таблицы БД. Клиент, получивший направление, должен увидеть уведомление о событии.
Создайте нового реферала и отправьте событие:
$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.
Как мне этого добиться?