阅读(3346)
赞(14)
Laravel 8 自定义通道
2021-07-06 09:24:51 更新
Laravel 为我们提供了许多通知频道,但是您亦可编写自己驱动以通过其他频道来发送通知,这并不难。首先,请定义一个包含了 send
方法的类。该方法应该接收两个参数: $notifiable
和 $notification
:
<?php
namespace AppChannels;
use IlluminateNotificationsNotification;
class VoiceChannel
{
/**
* 发送指定的通知。
*
* @param mixed $notifiable
* @param IlluminateNotificationsNotification $notification
* @return void
*/
public function send($notifiable, Notification $notification)
{
$message = $notification->toVoice($notifiable);
// 发送通知到 $notifiable 实例中……
}
}
一旦您的通知频道定义完成后,您便可以在应用中通过 via
方法来返回类名:
<?php
namespace AppNotifications;
use AppChannelsMessagesVoiceMessage;
use AppChannelsVoiceChannel;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateNotificationsNotification;
class InvoicePaid extends Notification
{
use Queueable;
/**
* 获取通知频道。
*
* @param mixed $notifiable
* @return array|string
*/
public function via($notifiable)
{
return [VoiceChannel::class];
}
/**
* 获取语音形式的通知。
*
* @param mixed $notifiable
* @return VoiceMessage
*/
public function toVoice($notifiable)
{
// ...
}
}