Аргумент должен быть экземпляром сообщения в трансляции laravel

Когда я настраиваю трансляцию, я получаю такую ​​ошибку:

Argument 1 passed to App\Events\MessagePosted::__construct() must be an instance of App\Events\Message, instance of App\Message given, called in /var/www/epg/app/Http/Controllers/MessageController.php on line 25 /var/www/epg/app/Events/MessagePosted.php#37

Я запускаю подобное событие с моего контроллера

broadcast(new MessagePosted($message, $user))->toOthers();

Он должен транслировать сообщение и пользователя на это событие.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Message;
use App\Events\MessagePosted;

class MessageController extends Controller
{
    public function store(Request $request) 
    {
        $user = Auth::user();

        // Store the new message
        $message = $user->messages()->create([
            'message' => $request->get('message')
        ]);

        // Announce that a new message has been posted
        broadcast(new MessagePosted($message, $user))->toOthers();

        return ['status' => 'OK'];
    }
}

Я не понимаю, что происходит с тех пор, как я видел, как люди говорят, проверяйте импорт, но я импортировал правильные классы в контроллер.

Вы можете выложить свой файл MessagePosted?

Alex Harris 01.05.2018 18:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
370
2

Ответы 2

Убедитесь, что ваш файл MessagePosted похож на этот

<?php

namespace App\Events;

use App\User; //your model
use App\Message; //your model
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

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

    public $message;

    public $user;

    public function __construct(Message $message, User $user)
    {
        $this->message = $message;
        $this->user = $user;
    }

    public function broadcastOn()
    {
        return new PrivateChannel('channel-name'); // your channel name
    }
}

Вы передавали App\Message в конструктор MessagePosted. Ошибка указывает на то, что ваш MessagePosted принимает App\Events\Message вместо App\Message. Обычно это происходит, когда вы забыли use App\Message в вашем MessagePosted, поэтому он использует пространство имен MessagePosted, которое является App\Events для Message, в результате получается App\Events\Message.

Короче говоря, use App\Message в вашем классе MessagePosted.

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