我正在尝试将数据传递给方法broadcastAs,但是我一直收到错误Too few arguments to function App\Events\NotifyUser::broadcastAs()
。下面是我尝试过的。
我通过以下方式在控制器上调用事件:
event(new NotifyUser('8', 'banned'));
我正在尝试通过以下方式访问事件中的数据:
public $user;
public $msg;
public function __construct($user, $msg)
{
$this->user = $user; //8
$this->msg = $msg; //banned
}
public function broadcastAs($user)
{
return "user-logged-$user";
}
在 broadcastAs 中没有 $ user 变量的情况下,它可以正常工作。
答案 0 :(得分:1)
您应该将其与set属性($this->user
)一起使用,而不要使用参数。
public $user;
public $msg;
public function __construct($user, $msg)
{
$this->user = $user;
$this->msg = $msg;
}
public function broadcastAs()
{
return "user-logged-" . $this->user->id;
}
但是,您确定要在此使用它吗?
window.Echo.private('channel-name.' + user_id)
.listen('BroadcastClassName', (e) => { }
// you'll edit listen() with broadcastAs
public function broadcastOn()
{
return new PrivateChannel('user.'.$this->user->id);
}
// broadcastAs() is optional
public function broadcastAs() {
return 'customEventName';
}
broadcastAs()
对于覆盖事件名称是可选的,因为默认名称是类名称本身。
最后一块,这就是你要得到的。
window.Echo.private('user.' + user_id)
.listen('customEventName', (e) => { }
如果您根本没有broadcastAs()
,那么在您的情况下,您的活动名称将为"NotifyUser"
,对我来说似乎是正确的。
window.Echo.private('user.' + user_id)
.listen('NotifyUser', (e) => { }