首页 > 解决方案 > Laravel 匿名通知 - 如何从 Laravel Notification::route() 函数获取路由值?

问题描述

Notification::route('sms', $mobileNumber)->notify(new SmsNotification($content));

最佳情况下,您应该在 Notifiable 模型(例如:用户)中使用 routeForNotificationSms 来获取路由的值。但是由于我正在向未注册用户发送通知,因此我试图访问我频道中的 $mobileNumber 变量,而无需转到 User 模型。如果我尝试访问数组中的值,我会得到错误

不能使用 Illuminate\Notifications\AnonymousNotifiable 类型的对象作为数组

如何直接从通道访问 Notification::route 参数中的值?

标签: phplaravellaravel-notification

解决方案


从您的频道中,该send()方法被传递给通知(在这种情况下是通知的一个实例AnonymousNotifiable。通知包含一个按频道索引的数组,您可以在其中获取此路由信息。

class SmsNotificationChannel
{
    public function send(mixed $notifiable, Notification $notification): void
    {
        $route = $notifiable->routes[self::class] ?? null;
        if ($route) {
            // do your thing
        }
    }
}

这假设您正在使用完整的类名调用匿名通知:

Notification::route(SmsNotificationChannel::class, $mobileNumber)
    ->notify(new SmsNotification($content));

您将不得不尝试看看它在原始代码中使用“sms”等短名称时的行为方式。我不确定它是否仍会按类名索引或使用短名称。


推荐阅读