Tôi có lỗi sau:Laravel Notifications Event Listener Không xác định tài sản
Undefined property: Illuminate\Notifications\Events\NotificationSent::$user in /var/www/app/app/Listeners/NoticationListener.php:31
Lỗi này xảy ra ở đây:
<?php
namespace App\Listeners;
use Illuminate\Notifications\Events\NotificationSent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class NoticationListener implements ShouldQueue
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param NotificationSent $event
* @return void
*/
public function handle(NotificationSent $event)
{
$notification = $event->notifiable;
$addressee = $notification; //error here
$address = $notification;
$type = "Notification";
dispatch(new SendEmail($type,$addressee,$address));
}
}
Tôi không hiểu tài sản không xác định này, đặc biệt là trên dòng này. Làm thế nào tôi có thể dd()
từ đây? Tôi đã cố gắng để đăng nhập $event
nhưng tôi không thể nhận được nó để đăng nhập, chỉ có lỗi này.
Thông báo của tôi hoạt động rất tốt trong ứng dụng, tôi chỉ muốn có email để đi cùng với họ, đó là lý do tại sao tôi có người nghe/sự kiện này.
Cảm ơn bạn.
EDIT
Mã kho được cử thông báo là dưới đây:
public function notify($asset)
{
$users = User::where("id","!=",Auth::user()->id)->get();
Notification::send($users, new NewAsset($asset));
}
Đó mở rộng của lớp Notification
là dưới đây:
class NewAsset extends Notification
{
use Queueable;
/**
* Create a new notification instance.
*
* @return void
*/
protected $asset;
public function __construct($asset)
{
$this->asset = $asset;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['database'];
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
'asset_id' => $this->asset->id
];
}
}
EDIT 2
Nếu ai đó có thể tư vấn cách kiểm tra lỗi tại thời điểm này, điều đó có thể hữu ích trong tương lai. Bởi vì mã không đồng bộ trên máy chủ, nó không trả lại dữ liệu cho máy khách và khi tôi cố gắng chuyển nó thành Log
, nó dường như không làm như vậy trước khi nó bị lỗi.
Tôi làm cách nào để gỡ lỗi trong trường hợp này?
Tôi đã xem xét khung của source code và không biết nơi tài sản người dùng $ đến từ đâu. Tôi giả sử nó phải làm với $event->notifiable
được gắn với mô hình User
, nhưng nếu nó bắn đúng cách cho tất cả người dùng bị ảnh hưởng từ bên trong ứng dụng, tại sao thuộc tính của nó là undefined
trong ngữ cảnh này?
Vui lòng hỗ trợ, cảm ơn bạn.
Bạn có thể cho chúng tôi biết sự kiện NotificationSent của bạn không? –
@EduardoPacios là mã khung - xem tại đây (https://github.com/laravel/framework/blob/bd352a0d2ca93775fce8ef02365b03fc4fb8cbb0/src/Illuminate/Notifications/Events/NotificationSent.php) –
tôi cũng chạy lớp thông báo này và làm việc, nếu bạn không sử dụng tính năng Notifiable trên người dùng ném ngoại lệ như thế này: BadMethodCallException: Gọi đến phương thức undefined Illuminate \ Database \ Query \ Builder :: routeNotificationFor(), nhưng lỗi của bạn là Phải tự hỏi, hãy đặt hàng đợi trên đồng bộ và giá trị thử nghiệm của $ event – honarkhah