4
リアルタイムの通知を作成中で、この奇妙なエラーが発生しました。私のモデルでは、SendNotificationData
(リスナーなし)と呼ばれるイベントをトリガーするブート方法があります。新しい通知が行われたときに処理されます。Laravel - 404エラーの原因となるイベント
裁判コントローラ
<?php
namespace App\Http\Controllers\Notification;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Models\Notification;
class NotificationController extends Controller
{
/**
* Trigger event to display notifications. This displays 404 error page
*
* @return none
*/
public function displayNotification()
{
$notification = new Notification();
$notification->EmployeeID = "EMP-00001";
$notification->NotificationText = "There is a new notification";
$notification->NotificationStatus = "unread";
$notification->NotificationType = "trial";
$notification->save();
}
}
通知モデルの起動方法:Javascript
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class SendNotificationData extends Event implements ShouldBroadcast
{
use SerializesModels;
public $new_notification_data;
/**
* Create a new event instance.
*
* @param $notification_data
* @return void
*/
public function __construct($new_notification_data)
{
$this->new_notification_data = $new_notification_data;
}
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return ['new-notification'];
}
/**
* Customize event name.
*
* @return array
*/
public function broadcastAs()
{
return 'private-send-new-notification';
}
}
:
/**
* Handle booting of model.
*
* @var string
*/
public static function boot()
{
static::created(function ($data) {
event(new SendNotificationData($data));
});
parent::boot();
}
これは私のSendNotificationData
イベントです
ここで、コントローラでランダムな通知を追加しようとすると、イベントが発生します。しかし、404エラーページが表示されます。 ShouldBroadcast
インターフェイスを削除したり、コンストラクタの内容を削除したりすると、エラーが表示されなくなりました。他のイベントがうまくいけば、このようなエラーの原因となるものは混乱しています。私は何かを逃したかもしれないので、私を案内してください。
コントローラコードも入力できますか? – apokryfos
トライアルコントローラコードを追加しました。 –
実際にそのコントローラのアクションにアクセスするためにルートが適切に設定されていますか? (関数内の 'dd(something)'はヒットしているかどうかを伝えることができます)。また、チャンネルで聞くために使用するJSを共有できますか? – apokryfos