Laravel 5.8中Pusher接收数据为Null的问题求助
解决Laravel 5.8中Pusher接收事件数据为null的问题
我一眼就找到了你代码里的核心问题——ChatEvent类的构造函数中属性赋值语法错误,导致message和user根本没被正确赋值,所以Pusher接收到的自然都是null。
问题根源
你在ChatEvent的构造函数里错误使用了可变属性访问语法:
public function __construct($message, User $user) { $this->$message = $message; $this->$user = $user; }
$this->$message这种写法是把变量$message的值(也就是你传入的'hello')当作属性名,实际是给$this->hello赋值,而非你定义的$this->message属性。同理,$user是对象,PHP会尝试把它转为字符串作为属性名,完全偏离了你的预期。
修正方案
把构造函数里的赋值改为直接访问类的公共属性:
public function __construct($message, User $user) { $this->message = $message; $this->user = $user; }
额外验证点(确保万无一失)
除了这个核心错误,你还可以快速确认以下几点:
- 确保
.env中的Pusher密钥、ID、集群配置,和broadcasting.php、前端bootstrap.js里的配置完全一致(你当前bootstrap.js硬编码了key,要和.env的PUSHER_APP_KEY匹配) - 在控制器的
send方法里用dd($user)验证,确认用户数据确实被正确获取 - 检查
routes/channels.php里的私有频道授权逻辑,确保当前用户有权访问channel-name这个频道
修正后重新触发事件,Pusher就能正确接收到message和user的数据了。
内容的提问来源于stack exchange,提问作者Ghulam Haider
相关产品推荐
相关产品推荐

