laravel boadcastWith不返回任何内容

问题描述 投票:0回答:1

嗨,这是我的控制者:

    namespace App\Http\Controllers;
    use App\Message;
    use App\Events\MessageEvent;
    use Illuminate\Http\Request;

    class MessageController extends Controller
    {
        public function index(){

         return event(new MessageEvent([1,2,34]));
        }
    }`

和我的活动:

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class MessageEvent implements ShouldBroadcast
{

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public $data;

    public function __construct($message)
    {
        $this->data = $message;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn(){
        return ['message'];
    }

    public function broadcastAs(){
        return 'messageEvent';
    }

    public function broadcastWith(){
    return $this->data;
    }
}

但是当我请求服务器时,它什么也不返回,或者显示“参数1不是数组”;当我把dd放到broadcastWith中时,它显示数据,但是它返回anaything。我几乎尝试了一切

php laravel events broadcast
1个回答
0
投票

1)broadcastOn()应该返回一个通道实例。

public function broadcastOn() {
   return new PresenceChannel('messages');
}

2)默认情况下将返回所有public属性,因此除非您要操作数据,否则无需使用broadcastWith()方法。

public function broadcastWith(){
   return $this->data;
}

In this answer我已经详细解释了。

© www.soinside.com 2019 - 2024. All rights reserved.