Событие Laravel Broadcast - как динамически определять имя частного канала

Я учусь создавать трансляции событий. Я хочу уведомить клиента после изменения статуса заказа. Я создал событие Order_Modified. Моя проблема в том, что уведомление не отображается на частном канале. На публичном канале все отлично работает.

class Order_Modified implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;

/**
 * Create a new event instance.
 *
 * @return void
 */

public $order;
public $user;

public function __construct($order, $user)
{
    $this->order = $order;
    $this->user = $user;
}

/**
 * Get the channels the event should broadcast on.
 *
 * @return \Illuminate\Broadcasting\Channel|array
 */
public function broadcastOn()
{
    return new PrivateChannel('order.' . $this->order->id);
}
}

///tification.vue

<template>
<div>

 <div v-if="mes" class="notification is-primary">
  <button v-on:click=za() class="delete"></button> Order {{nr}} modified created by {{us}}
</div>

</div>
</template>

<script>
export default {
data: function() {
return {
  mes: false,
  nr: 0,
  us: 0
 };
 },
 mounted() {
 Echo.private("order." + e.order.id).listen(
  "Order_Modified",
  e => {
    this.mes = true;
    this.nr = e.order.id;
    this.us = e.user.id;
   }
 );
},
methods: {
  za: function() {
  this.mes = false;
 }
}
} ;

/// channel.php

Broadcast::channel('order.{id}', function ($user, $id) {
return $user->id === \App\Order::find($id)->users_id;
});

Я думаю, что проблема в e.order.id. Я понятия не имею, как передать идентификатор заказа в метод Echo.private. Пожалуйста помоги.

0 ответов

Другие вопросы по тегам