공고


ㅋㅋ   

메시지 알림

소개

이메일 보내기 지원 외에도 Laravel은 이메일, SMS(

Nexmo

) 및 Slack을 통해. 나중에 웹 페이지에 표시하기 위해 알림을 데이터베이스에 저장할 수도 있습니다.

일반적으로 알림은 앱에서 무슨 일이 일어나고 있는지 사용자에게 알리는 데 사용되는 짧고 유익한 메시지입니다. 예를 들어, 온라인 거래 애플리케이션을 작성하는 경우 이메일 및 SMS 채널 수업을 통해 사용자에게 "청구서 결제" 알림을 보내야 합니다.

알림 만들기

Laravel의 알림은 클래스입니다(보통 app/Notifications 폴더에 저장됨). 볼 수 없더라도 걱정하지 마세요. make:notification 명령을 실행하여 만드세요. app/Notifications 文件夹下)。看不到的话不要担心,运行下 make:notification 命令就能创建了:

php artisan make:notification InvoicePaid

这条命令会在 app/Notifications 目录下生成一个新的通知类。这个类包含 via 方法以及一个或多个消息构建的方法 (比如 toMail 或者  toDatabase) ,它们会针对指定的渠道把通知转换为对应的消息。

发送通知

使用 Notifiable Trait

通知可以通过两种方法发送:Notifiable trait 的 notify 方法或 Notification facade。首先让我们来探讨下使用 trait:

<?php
    namespace App;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    class User extends Authenticatable{   
     use Notifiable;
    }

默认的 AppUser 模型中使用了这个 trait,它包含着一个可以用来发送通知的方法: notifynotify 方法需要一个通知实例做参数:

use App\Notifications\InvoicePaid;
$user->notify(new InvoicePaid($invoice));

{tip} 记住,你可以在任意模型中使用  IlluminateNotificationsNotifiable trait,而不仅仅是在 User 模型中。

使用 Notification Facade

另外,你可以通过 Notification facade 来发送通知。它主要用在当你给多个可接收通知的实体发送的时候,比如给用户集合发送通知。使用 Facade 发送通知的话,要把可以接收通知和通知的实例传递给 send 方法:

Notification::send($users, new InvoicePaid($invoice));

发送指定频道

每个通知类都会有个 via 方法,它决定了通知会在哪个频道上发送。开箱即用的频道有 maildatabasebroadcastnexmoslack

{tip} 如果你想使用其他的频道,比如 Telegram 或者 Pusher,你可以去看下社区驱动的 Laravel 通知频道网站。

via 方法接收一个 $notifiable 实例。这个实例将是通知实际发送到的类的实例。你可以用 $notifiable

/**
 * 获取通知发送频道。
 *
 * @param  mixed  $notifiable
 * @return array
 */
 public function via($notifiable){
     return $notifiable->prefers_sms ? ['nexmo'] : ['mail', 'database'];
     }

이 명령은 app/Notifications 디렉토리 종류. 이 클래스에는 지정된 채널에 알리는 via 메서드와 하나 이상의 메시지 구성 메서드(예: toMail 또는 toDatabase)가 포함되어 있습니다. 해당 메시지.

알림 보내기

🎜알림 가능한 특성 사용🎜🎜알림은 두 가지 방법으로 보낼 수 있습니다. < code>Notified
특성의 notify 메서드 또는 Notification 파사드. 먼저 특성 사용을 살펴보겠습니다. 🎜
<?php
    namespace App\Notifications;
    use Illuminate\Bus\Queueable;
    use Illuminate\Notifications\Notification;
    use Illuminate\Contracts\Queue\ShouldQueue;
    class InvoicePaid extends Notification implements ShouldQueue{
        use Queueable;  
          // ...
      }
🎜기본 AppUser 모델은 알림을 보내는 데 사용할 수 있는 메서드인 notify가 포함된 이 특성을 사용합니다. notify 메소드에는 매개변수로 알림 인스턴스가 필요합니다: 🎜
$user->notify(new InvoicePaid($invoice));
🎜🎜{tip} 뿐만 아니라 모든 모델에서 IlluminateNotificationsNotifying 특성을 사용할 수 있다는 점을 기억하세요. 모델의 사용자입니다. 🎜
🎜🎜🎜🎜Notification Facade 사용🎜🎜또한 Notification Facade를 통해 알림을 보낼 수 있습니다. 사용자 모음에 알림을 보내는 등 알림을 받을 수 있는 여러 엔터티에 알림을 보낼 때 주로 사용됩니다. Facade를 사용하여 알림을 보내는 경우 알림 및 알림을 받을 수 있는 인스턴스를 send 메서드에 전달해야 합니다: 🎜
$when = now()->addMinutes(10);
$user->notify((new InvoicePaid($invoice))->delay($when);
🎜
🎜🎜🎜Send 지정된 채널🎜🎜 각 알림 클래스에는 알림이 전송될 채널을 결정하는 via 메서드가 있습니다. 기본 채널로는 mail, database, broadcast, nexmoslack<이 있습니다. /코드> >. 🎜🎜🎜{tip} 텔레그램이나 푸셔 등 다른 채널을 사용하고 싶다면 커뮤니티 기반의 Laravel 알림 채널 웹사이트를 확인하세요. 🎜🎜 via 메소드는 $notifying 인스턴스를 수신합니다. 이 인스턴스는 알림이 실제로 전송되는 클래스의 인스턴스가 됩니다. $notifying을 사용하여 알림 전송에 사용할 채널을 결정할 수 있습니다. 🎜
Notification::route('mail', 'taylor@example.com')   
         ->route('nexmo', '5555555555')            
         ->notify(new InvoicePaid($invoice));
🎜🎜🎜🎜🎜Notification Queue🎜🎜🎜{참고:} 전에 대기열을 구성하고 대기열 작업을 시작해야 합니다. 알림 대기열을 사용합니다. 🎜

알림 전송에는 시간이 많이 걸릴 수 있습니다. 특히 채널에서 알림을 전송하려면 추가 API 호출이 필요하기 때문입니다. 애플리케이션의 응답 시간을 단축하기 위해 알림을 큐에 푸시하고 비동기적으로 보낼 수 있습니다. 큐에 푸시 알림을 구현하려면 해당 알림 클래스에서 ShouldQueue 인터페이스를 구현하고 < code>대기 가능 특성. make:notification 명령을 통해 알림 클래스가 생성된 경우 인터페이스와 특성은 기본적으로 가져온 것이므로 알림 클래스에 빠르게 추가할 수 있습니다: ShouldQueue 接口并使用 Queueable trait 。 如果通知类是通过 make:notification 命令生成的,那么该接口和 trait 已经默认导入,你可以快速将它们添加到通知类:

/**
 * 获取通知对应的邮件。
 *
 * @param  mixed  $notifiable
 * @return \Illuminate\Notifications\Messages\MailMessage
 */
 public function toMail($notifiable){ 
    $url = url('/invoice/'.$this->invoice->id);    
    return (new MailMessage)             
       ->greeting('Hello!')                
       ->line('One of your invoices has been paid!')                
       ->action('View Invoice', $url)                
       ->line('Thank you for using our application!');
    }

ShouldQueue 接口被添加到通知类以后,你可以像之前一样正常发送通知,Laravel 会自动检测到 ShouldQueue 接口然后将通知推送到队列:

/**
 * 获取通知邮件。
 *
 * @param  mixed  $notifiable
 * @return \Illuminate\Notifications\Messages\MailMessage
 */
 public function toMail($notifiable){
     return (new MailMessage)->view(  
           'emails.name', ['invoice' => $this->invoice]  
          );
    }

如果你想要延迟通知的发送,可以在通知实例后加上 delay 方法:

use App\Mail\InvoicePaid as Mailable;
/**
 * Get the mail representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return Mailable
 */
 public function toMail($notifiable){ 
    return (new Mailable($this->invoice))->to($this->user->email);
  }

按需通知

有时候你可能需要发送通知给某个用户,但是该用户不存在于应用的用户系统中,要实现这一目的,我们使用  Notification::route 方法在发送通知之前指定特别的通知路由:

/**
 * 获取通知邮件。
 *
 * @param  mixed  $notifiable
 * @return \Illuminate\Notifications\Message
 */
 public function toMail($notifiable){
     return (new MailMessage)            
         ->error()                
         ->subject('Notification Subject')                
         ->line('...');
      }

邮件通知

格式化邮件消息

如果通知支持以邮件方式发送,你需要在通知类上定义一个 toMail 方法。该方法会接收一个 $notifiable 实体并返回 IlluminateNotificationsMessagesMailMessage 实例。邮件消息可以包含多行文本以及对动作的调用,让我们来看一个 toMail 方法的示例:

<?php
    namespace App;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    class User extends Authenticatable{
        use Notifiable;    
     /**
     * 邮件通道通知的路由。
     *
     * @param  \Illuminate\Notifications\Notification  $notification
     * @return string
     */   
   public function routeNotificationForMail($notification) 
      {     
         return $this->email_address;   
      }
  }

{注:} 注意到我们在 toMail 方法中使用了 $this->invoice->id ,你可以传递任何通知生成消息所需要的数据到通知的构造器。

在这个例子中,我们注册了一条问候、一行文本、对动作的调用以及另一行文本。 MailMessage 对象提供的这些方法让格式化短小的事务邮件变得简单快捷。mail 通道会将消息组件转化为美观的、响应式的、带有纯文本副本的 HTML 邮件模板。下面是一个通过 mail

/**
 * 获取通知的邮件表示。
 *
 * @param  mixed  $notifiable
 * @return \Illuminate\Notifications\Messages\MailMessage
 */
 public function toMail($notifiable){ 
    return (new MailMessage)              
      ->subject('Notification Subject')                
      ->line('...');
  }

ShouldQueue< /code> 인터페이스 알림 클래스에 추가된 후 이전처럼 정상적으로 알림을 보낼 수 있습니다. Laravel은 자동으로 ShouldQueue 인터페이스를 감지하고 알림을 대기열에 푸시합니다:
php artisan vendor:publish --tag=laravel-notifications

지연하려는 경우 알림을 보내려면 알림 인스턴스 뒤에 delay 메소드를 추가할 수 있습니다: 1.png

php artisan make:notification InvoicePaid --markdown=mail.invoice.paid

주문형 알림

🎜때때로 사용자에게 알림을 보내야 할 수도 있지만 해당 사용자가 애플리케이션의 사용자 시스템에 존재하지 않는 경우가 있습니다. 이를 위해 Notification::route 메소드를 사용합니다. 알림을 보내기 전에 특별한 알림 경로를 지정하려면 :🎜
/**
 * 获取通知的邮件表示。
 *
 * @param  mixed  $notifiable
 * @return \Illuminate\Notifications\Messages\MailMessage
 */
 public function toMail($notifiable){ 
    $url = url('/invoice/'.$this->invoice->id);    
    return (new MailMessage)              
      ->subject('Invoice Paid')                
      ->markdown('mail.invoice.paid', ['url' => $url]);
   }
🎜🎜

메일 알림

🎜🎜

형식 이메일 메시지 변환

🎜알림이 이메일 전송을 지원하는 경우 알림 클래스에서 toMail 메소드를 정의해야 합니다. 이 메소드는 $notifying 엔터티를 수신하고 IlluminateNotificationsMessagesMailMessage 인스턴스를 반환합니다. 이메일 메시지에는 여러 줄의 텍스트와 작업 호출이 포함될 수 있습니다. toMail 메서드의 예를 살펴보겠습니다. 🎜
@component('mail::message')
# Invoice PaidYour invoice has been paid!
@component('mail::button', ['url' => $url])
View Invoice
@endcomponent
Thanks,<br>
{{ config('app.name') }}
@endcomponent
🎜{참고:} 를 사용하고 있습니다. toMail $this->invoice->id는 code> 메소드에서 사용되며 알림 생성자에 메시지를 생성하기 위해 알림에 필요한 모든 데이터를 전달할 수 있습니다. 🎜🎜🎜이 예에서는 인사말, 텍스트 한 줄, 동작 호출, 다른 텍스트 한 줄을 등록했습니다. MailMessage 개체가 제공하는 메서드를 사용하면 짧은 거래 이메일의 형식을 빠르고 쉽게 지정할 수 있습니다. mail 채널은 메시지 구성 요소를 일반 텍스트 복사본이 포함된 아름답고 반응이 빠른 HTML 이메일 템플릿으로 변환합니다. 다음은 mail 채널을 통해 생성된 이메일의 예입니다. 🎜🎜🎜🎜🎜🎜


{참고:} 이메일 알림을 보낼 때 name 값이 구성 파일 config/app.php에 설정되어 있는지 확인하세요. 이 값은 다음과 같습니다. 이메일 알림 메시지의 헤더와 트레일러에 사용됩니다. config/app.php 中设置了 name 的值,该值将会用在邮件通知消息的头部和尾部。

其他通知格式化选项

除了在通知类中定义多行文本之外,你还可以使用 view 方法来指定一个自定义的、用于渲染通知邮件的模板:

@component('mail::button', ['url' => $url, 'color' => 'green'])
View Invoice
@endcomponent

此外,你可以从 toMail 方法中返回一个 可邮寄对象 :

@component('mail::panel')
This is the panel content.
@endcomponent

错误消息

一些通知会告知用户错误信息,例如失败的订单支付。你可以在构建消息的时候调用 error 方法来指示该邮件消息表示错误信息。在邮件消息中使用 error 方法时,动作按钮将会变成红色:

@component('mail::table')
| Laravel       | Table         | Example  |
| ------------- |:-------------:| --------:|
| Col 2 is      | Centered      |       |
| Col 3 is      | Right-Aligned |       |
@endcomponent

自定义接收人

通过 mail 通道发送通知时,通知系统会自动在被通知实体上查找 email 属性,你可以通过在该实体上定义一个  routeNotificationForMail 来自定义使用哪个邮箱地址发送通知:

php artisan vendor:publish --tag=laravel-mail

自定义主题

默认情况下,邮件的主题就是格式为 「标题风格」 的通知类名,因此,如果通知类被命名为 InvoicePaid,邮件的主题就是 Invoice Paid,如果你想要为消息指定明确的主题,可以在构建消息的时候调用 subject 方法:

php artisan notifications:table
php artisan migrate

自定义模板

你可以通过发布通知扩展包的资源来修改邮件通知所使用的 HTML 和纯文本模板。运行完下面这个命令之后,邮件通知模板将会存放到 resources/views/vendor/notifications 目录:

/**
 * 获取通知的数组表示。
 *
 * @param  mixed  $notifiable
 * @return array
 */
 public function toArray($notifiable){
     return [      
       'invoice_id' => $this->invoice->id,        
       'amount' => $this->invoice->amount,  
         ];
    }

Markdown 邮件通知

Markdown 邮件通知允许你利用邮件通知的预置模板,从而让你可以自由编写更长、更具个性化的消息。因为这些消息以 Markdown 格式编写,Laravel 还可以为它们渲染出高颜值、响应式的 HTML 模板,同时自动生成纯文本的副本。

生成消息

要生成带有相应 Markdown 模板的通知,可以在使用 Artisan 命令 make:notification 时带上 --markdown 选项:

$user = App\User::find(1);
foreach ($user->notifications as $notification) { 
   echo $notification->type;
}

和其他邮件通知一样,使用 Markdown 模板的通知类也要定义一个 toMail 方法。不过,你可以使用 markdown 方法取代构造通知的 lineaction

기타 알림 형식 옵션

알림 클래스에서 여러 줄 텍스트를 정의하는 것 외에도 view 메서드를 사용하여 사용자 정의 템플릿을 지정할 수도 있습니다. 알림 이메일 렌더링:

$user = App\User::find(1);
foreach ($user->unreadNotifications as $notification) {
    echo $notification->type;
  }
또한 toMail 메소드에서 메일 가능 객체를 반환할 수 있습니다:
$user = App\User::find(1);
foreach ($user->unreadNotifications as $notification) {
    $notification->markAsRead();
  }

🎜🎜

오류 메시지🎜일부 알림에서는 주문 결제 실패 등의 오류 메시지를 사용자에게 알립니다. 이메일 메시지가 오류 정보를 나타냄을 나타내기 위해 메시지를 구성할 때 error 메소드를 호출할 수 있습니다. 이메일 메시지에서 error 메소드를 사용하면 작업 버튼이 빨간색으로 변합니다: 🎜
$user->unreadNotifications->markAsRead();
🎜
🎜🎜

수신자 사용자 정의🎜mail 채널을 통해 알림을 보낼 때 알림 시스템은 알림을 받은 엔터티에서 email 속성을 ​​자동으로 찾습니다. 엔터티 알림을 보내는 데 사용되는 이메일 주소를 사용자 정의하려면: 🎜
$user = App\User::find(1);
$user->unreadNotifications()->update(['read_at' => now()]);
🎜
🎜🎜

제목 사용자 정의

🎜기본적으로 제목은 이메일 형식은 "제목 스타일" 알림 클래스 이름입니다. 따라서 알림 클래스 이름이 InvoicePaid인 경우 이메일 제목은 Invoice Paid입니다. 명시적인 제목을 지정하려면 메시지를 작성할 때 subject 메소드를 호출할 수 있습니다. 🎜
$user->notifications()->delete();
🎜
🎜🎜

템플릿 사용자 정의🎜알림 확장 패키지의 리소스 게시를 통과하여 이메일 알림에 사용되는 HTML 및 일반 텍스트 템플릿을 수정할 수 있습니다. 다음 명령을 실행하면 이메일 알림 템플릿이 resources/views/vendor/notifications 디렉터리에 저장됩니다: 🎜
use Illuminate\Notifications\Messages\BroadcastMessage;/**
 * 获取通知的可广播表示。
 *
 * @param  mixed  $notifiable
 * @return BroadcastMessage
 */
 public function toBroadcast($notifiable){ 
    return new BroadcastMessage([      
      'invoice_id' => $this->invoice->id,        
      'amount' => $this->invoice->amount,   
      ]);
   }
🎜
🎜🎜

마크다운 이메일 알림

🎜마크다운 이메일 알림을 사용하면 사전 구축된 이메일 알림 템플릿을 활용하여 더 길고 개인화된 메시지를 자유롭게 작성할 수 있습니다. 이러한 메시지는 Markdown 형식으로 작성되기 때문에 Laravel은 일반 텍스트 복사본을 자동으로 생성하는 동시에 메시지를 아름답고 반응이 빠른 HTML 템플릿으로 렌더링할 수도 있습니다. 🎜🎜
🎜🎜

메시지 생성

🎜해당 Markdown 템플릿으로 알림을 생성하려면 Artisan 명령 make:notification을 사용할 수 있습니다. --markdown 옵션 사용: 🎜
return (new BroadcastMessage($data))          
      ->onConnection('sqs')                
      ->onQueue('broadcasts');
🎜다른 이메일 알림과 마찬가지로 Markdown 템플릿을 사용하는 알림 클래스도 toMail 메서드를 정의해야 합니다. 그러나 생성자 알림의 lineaction 메서드 대신 markdown 메서드를 사용하여 사용할 Markdown 템플릿 이름을 지정할 수 있습니다. 🎜
Echo.private('App.User.' + userId) 
   .notification((notification) => {
        console.log(notification.type);  
       });
🎜🎜🎜 🎜

메시지 작성

마크다운 이메일 알림은 블레이드 구성요소와 마크다운 구문의 조합을 사용하므로 Laravel의 사전 구축 구성요소에서 벗어나지 않고도 쉽게 알림을 작성할 수 있습니다.

<?php
    namespace App;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Broadcasting\PrivateChannel;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    class User extends Authenticatable{    use Notifiable;   
     /**
     * 用户接收广播通知的通道。
     *
     * @return string
     */   
    public function receivesBroadcastNotificationsOn()   
     {     
        return 'users.'.$this->id;   
      }
   }

Button 구성요소

Button 구성요소는 중앙에 위치한 버튼 링크를 렌더링합니다. 이 구성요소는 url과 선택적 color라는 두 가지 매개변수를 받습니다. 지원되는 색상은 파란색, 녹색입니다. 빨간색. 메시지에 버튼 구성 요소를 원하는 만큼 추가할 수 있습니다. url 和可选的 color,支持的颜色有 bluegreen 和  red。你可以添加任意数量的按钮组件到消息中:

composer require laravel/nexmo-notification-channel

面板组件

面板组件将给定的文字区块渲染到一个面板中,并且有一个淡淡的背景色与周围的消息区分开。适用于需要引起注意的文字区块:

'nexmo' => [ 
   'key' => env('NEXMO_KEY'),    
   'secret' => env('NEXMO_SECRET'),    
   'sms_from' => '15556666666',
],

表格组件

表格组件允许你将一个 Markdown 表格转化为 HTML 表格。该组件接收 Markdown 表格作为其内容。表格列对齐支持使用默认的 Markdown 表格列对齐语法:

/**
 * Get the Nexmo / SMS representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return NexmoMessage
 */
 public function toNexmo($notifiable){ 
    return (new NexmoMessage)             
       ->content('Your SMS message content');
   }

自定义组件

你可以导出所有 Markdown 通知组件到应用中进行自定义,要导出组件,使用 Artisan 命令 vendor:publish 来发布  laravel-mail 资源标签:

/**
 * Get the Nexmo / SMS representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return NexmoMessage
 */
 public function toNexmo($notifiable){ 
    return (new NexmoMessage)             
       ->content('Your unicode message')                
       ->unicode();
    }

该命令会发布 Markdown 邮件通知组件到 resources/views/vendor/mail 目录。 mail 目录包含 htmlmarkdown 目录,每个子目录中又包含各自的所有有效组件。你可以按照自己的喜好自由编辑这些组件。

自定义 CSS

导出组件之后, resources/views/vendor/mail/html/themes 目录将会包含一个默认的 default.css 文件,你可以在这个文件中自定义 CSS,这样 Markdown 通知的 HTML 样式就会自动调整。

{注:} 如果你想要为 Markdown 组件构建全新的主题,只需在 html/themes 目录中编写一个新的 CSS 文件并修改  mail 配置文件的  theme 选项即可。

数据库通知

预备知识

database 通知通道会在数据表中存储通知信息,该表包含诸如通知类型以及用于描述通知的自定义 JSON 数据之类的信息。

你可以在用户界面中查询这个数据表来展示通知,不过,在此之前,需要创建数据表来保存信息,你可以使用  notifications:table

/**
 * Get the Nexmo / SMS representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return NexmoMessage
 */
 public function toNexmo($notifiable){ 
    return (new NexmoMessage)             
       ->content('Your SMS message content')                
       ->from('15554443333');
   }

Panel 구성 요소

패널 구성 요소는 주변 메시지와 구별하기 위해 주어진 텍스트 블록을 희미한 배경색이 있는 패널로 렌더링합니다. 주의가 필요한 텍스트 블록에 이상적입니다.

<?php
    namespace App;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    class User extends Authenticatable{  
      use Notifiable;    
      /**
     * Route notifications for the Nexmo channel.
     *
     * @param  \Illuminate\Notifications\Notification  $notification
     * @return string
     */  
    public function routeNotificationForNexmo($notification) 
       {      
         return $this->phone;   
        }
    }

Table Component🎜🎜Table 구성 요소를 사용하면 Markdown 테이블을 HTML 테이블로 변환할 수 있습니다. 이 구성 요소는 Markdown 테이블을 콘텐츠로 받습니다. 테이블 열 정렬은 기본 Markdown 테이블 열 정렬 구문 사용을 지원합니다. 🎜
composer require laravel/slack-notification-channel
🎜🎜🎜🎜Customized Components🎜🎜모든 Markdown 알림 구성 요소를 응용 프로그램으로 내보낼 수 있습니다. 컴포넌트를 사용하려면 Artisan 명령 vendor:publish를 사용하여 laravel-mail 리소스 태그를 게시하세요. 🎜
/**
 * Get the Slack representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return SlackMessage
 */
 public function toSlack($notifiable){
     return (new SlackMessage)            
         ->content('One of your invoices has been paid!');
      }
🎜이 명령은 Markdown 이메일 알림 컴포넌트를 resources/에 게시합니다. /vendor/mail 디렉토리를 봅니다. mail 디렉토리에는 htmlmarkdown 디렉토리가 포함되어 있으며 각 디렉토리에는 유효한 구성 요소가 모두 포함되어 있습니다. 원하는 대로 이러한 구성 요소를 자유롭게 편집할 수 있습니다. 🎜🎜Custom CSS🎜🎜구성 요소를 내보낸 후 resources/views/vendor/mail/html/themes 디렉토리에 기본 default.css 파일이 포함됩니다. Markdown 알림의 HTML 스타일이 자동으로 조정되도록 이 파일에 CSS를 추가합니다. 🎜
🎜{참고:} Markdown 구성 요소에 대한 새 테마를 구축하려면 html/themes 디렉터리에 새 CSS 파일을 작성하고 mail를 수정하세요. 구성 파일의 theme 옵션으로 충분합니다. 🎜
🎜
🎜🎜

데이터베이스 알림

🎜
🎜🎜🎜Prerequisites🎜🎜데이터베이스 알림 채널은 알림 유형 및 알림을 설명하는 사용자 정의 JSON 데이터와 같은 정보가 포함된 데이터 테이블에 알림 정보를 저장합니다. 🎜🎜사용자 인터페이스에서 이 데이터 테이블을 쿼리하여 알림을 표시할 수 있습니다. 하지만 이를 수행하기 전에 notifications:table 명령을 사용하여 데이터 테이블을 만들어야 합니다. 마이그레이션 파일을 생성한 다음 사용하면 해당 데이터 테이블이 생성됩니다: 🎜
/**
 * Get the Slack representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return SlackMessage
 */
 public function toSlack($notifiable){ 
    return (new SlackMessage)           
         ->from('Ghost', ':ghost:')                
         ->to('#other')                
         ->content('This will be sent to #other');
     }
🎜🎜🎜🎜

데이터베이스 알림 형식

알림이 데이터베이스 테이블에 저장을 지원하는 경우 알림 클래스는 toDatabase 또는 toArray 메서드를 정의해야 합니다. 이 메소드는 $notifying 엔터티를 매개변수로 받아들이고 기본 PHP 배열을 반환합니다. 반환된 데이터는 JSON으로 인코딩되어 알림 테이블의 data 열에 저장됩니다. toArray 메서드의 예를 살펴보겠습니다. toDatabasetoArray 方法。此方法接受 $notifiable 实体作参数并返回原生 PHP 数组。返回的数据将被编码为 JSON 并存储到 notifications 表的 data 列。来看一个 toArray 方法示例:

/**
 * Get the Slack representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return SlackMessage
 */
 public function toSlack($notifiable){ 
    return (new SlackMessage)              
      ->from('Laravel')                
      ->image('https://laravel.com/favicon.png')                
      ->content('This will display the Laravel logo next to the message');
   }

toDatabase Vs. toArray

toArray 方法还可以使用 broadcast 通道来判断哪些数据被广播到 JavaScript 客户端。如果针对 databasebroadcast 通道分别有两个不同的数组表示,你需要定义 toDatabase 方法代替 toArray 方法。

访问通知

一旦通知存入数据库,就需要适当的方法自通知实体访问它们。 包含在 Lareval 的默认 AppUser 模型带有 IlluminateNotificationsNotifiable trait,它的 notifications Eloquent 关联方法能返回实体通知。要获取通知,可以像其它  Eloquent 关联方法一样访问此方法。默认情况下,通知按照  created_at 时间戳排序:

/**
 * Get the Slack representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return SlackMessage
 */
 public function toSlack($notifiable){ 
    $url = url('/exceptions/'.$this->exception->id);    
    return (new SlackMessage)              
      ->error()                
      ->content('Whoops! Something went wrong.')                
      ->attachment(function ($attachment) use ($url) {       
                   $attachment->title('Exception: File Not Found', $url) 
                            ->content('File [background.jpg] was not found.');               
                    });
           }

若要只获取 「未读」通知,可以使用 unreadNotifications 关联方法。同样这些通知按照 created_at 时间戳排序:

/**
 * Get the Slack representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return SlackMessage
 */
 public function toSlack($notifiable){
     $url = url('/invoices/'.$this->invoice->id);    
     return (new SlackMessage)             
        ->success()                
        ->content('One of your invoices has been paid!')                
        ->attachment(function ($attachment) use ($url) {              
              $attachment->title('Invoice 1322', $url)                             
                       ->fields([                                   
                        'Title' => 'Server Expenses',                                    
                        'Amount' => ',234',                                    
                        'Via' => 'American Express',                                    
                        'Was Overdue' => ':-1:',                                
                        ]);              
          });
     }

{tip} 若要从 JavaScript 客户端访问通知,需要为应用定义一个通知控制器,它返回可通知实体的通知,比如当前用户。可以从 JavaScript 客户端向该控制器 URI 发送 HTTP 请求。

标记通知已读

通常,在用户阅览一条通知之后,你会想将其标识为「已读」。 IlluminateNotificationsNotifiable trait 提供了 markAsRead 方法,它更新数据库中通知记录的 read_at 列:

/**
 * Get the Slack representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return SlackMessage
 */
 public function toSlack($notifiable){
     $url = url('/exceptions/'.$this->exception->id);    
     return (new SlackMessage)             
        ->error()                
        ->content('Whoops! Something went wrong.')                
        ->attachment(function ($attachment) use ($url) {                  
             $attachment->title('Exception: File Not Found', $url)                            
                ->content('File [background.jpg] was *not found*.')                              
                ->markdown(['text']);            
              });
       }

可以在通知控制集合上直接使用 markAsRead 方法代替循环调用通知:

<?php
    namespace App;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    class User extends Authenticatable{  
      use Notifiable;   
     /**
     * Route notifications for the Slack channel.
     *
     * @param  \Illuminate\Notifications\Notification  $notification
     * @return string
     */   
    public function routeNotificationForSlack($notification) 
       {     
          return 'https://hooks.slack.com/services/...';  
        }
     }

还可以使用指更新将所有的通知标为已读,而不从数据库中读取它们:

$user->notify((new InvoicePaid($invoice))->locale('es'));

可以使用 delete

Notification::locale('es')->send($users, new InvoicePaid($invoice));

toDatabasetoArray

toArray< /code> 메소드는 broadcast 채널을 사용하여 JavaScript 클라이언트에 브로드캐스트할 데이터를 결정할 수도 있습니다. databasebroadcast 채널에 대한 두 가지 서로 다른 배열 표현이 있는 경우 toArraytoDatabase 메서드를 정의해야 합니다. 코드> 방법.

알림 액세스

알림이 데이터베이스에 저장되면 알림 엔터티에서 알림에 액세스하려면 적절한 방법이 필요합니다. Lareval에 포함된 기본 AppUser 모델은 IlluminateNotificationsNotifying 특성을 가지며 해당 알림 Eloquent 관련 메서드는 엔터티 알림을 반환할 수 있습니다. 알림을 받으려면 다른 Eloquent 관련 메소드처럼 이 메소드에 액세스할 수 있습니다. 기본적으로 알림은 created_at 타임스탬프를 기준으로 정렬됩니다.

use Illuminate\Contracts\Translation\HasLocalePreference;
class User extends Model implements HasLocalePreference{   
    /**
     * Get the user's preferred locale.
     *
     * @return string
     */    
   public function preferredLocale() 
      {      
        return $this->locale;    
      }
    }
"읽지 않은" 알림만 받으려면 unreadNotifications 연결 방법을 사용할 수 있습니다. 다시 이러한 알림은 created_at 타임스탬프를 기준으로 정렬됩니다.

$user->notify(new InvoicePaid($invoice));

{tip} JavaScript 클라이언트에서 알림에 액세스하려면 알림 대상 엔터티에 대한 알림을 반환하는 애플리케이션에 대한 알림 컨트롤러를 정의해야 합니다. , 예를 들어 현재 사용자. JavaScript 클라이언트에서 이 컨트롤러 URI로 HTTP 요청을 보낼 수 있습니다.

알림을 읽음으로 표시

사용자가 알림을 읽은 후 "읽음"으로 표시하려는 경우가 많습니다. IlluminateNotificationsNotifying 특성은 데이터베이스에 있는 알림 레코드의 read_at 열을 업데이트하는 markAsRead 메서드를 제공합니다. 🎜
/**
 * The event listener mappings for the application.
 *
 * @var array
 */
 protected $listen = [ 
    'Illuminate\Notifications\Events\NotificationSent' => [     
       'App\Listeners\LogNotification',  
      ],
  ];
🎜에서 직접 사용할 수 있습니다. 루프에서 알림을 호출하는 대신 알림 제어 컬렉션< code>markAsRead
메서드: 🎜
/**
 * Handle the event.
 *
 * @param  NotificationSent  $event
 * @return void
 */
 public function handle(NotificationSent $event){
     // $event->channel    
     // $event->notifiable    
     // $event->notification    
     // $event->response
  }
🎜 손가락 업데이트를 사용하여 데이터베이스에서 알림을 읽지 않고 모든 알림을 읽음으로 표시할 수도 있습니다. 🎜
<?php
    namespace App\Channels;
    use Illuminate\Notifications\Notification;class VoiceChannel{   
     /**
     * 发送指定的通知.
     *
     * @param  mixed  $notifiable
     * @param  \Illuminate\Notifications\Notification  $notification
     * @return void
     */  
    public function send($notifiable, Notification $notification)  
      {       
        $message = $notification->toVoice($notifiable);        
        // Send notification to the $notifiable instance...   
       }
    }
🎜 < code>delete 메소드는 테이블에서 전체 알림을 삭제합니다: 🎜
<?php
    namespace App\Notifications;
    use Illuminate\Bus\Queueable;
    use App\Channels\VoiceChannel;
    use App\Channels\Messages\VoiceMessage;
    use Illuminate\Notifications\Notification;
    use Illuminate\Contracts\Queue\ShouldQueue;
    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)  
     {     
        // ...  
      }
   }
🎜🎜🎜🎜🎜Broadcastnotation🎜🎜🎜🎜🎜🎜알림을 브로드캐스트하기 전에 Laravel의 이벤트 브로드캐스트를 구성하고 숙지해야 합니다. 서비스. 이벤트 브로드캐스팅은 JavaScript 클라이언트가 서버에 의해 트리거된 Laravel 이벤트에 응답하는 방법을 제공합니다. 🎜🎜🎜🎜🎜

형식화된 브로드캐스트 알림

broadcast 채널은 JavaScript 클라이언트가 실시간으로 알림을 캡처할 수 있도록 하는 Laravel의 이벤트 브로드캐스팅 서비스를 사용하여 알림을 브로드캐스트합니다. 알림이 브로드캐스트를 지원하는 경우 알림 클래스에 toBroadcast 메서드를 정의해야 합니다. 이 메소드는 $notifying 엔터티를 매개변수로 받아들이고 BroadcastMessage 인스턴스를 반환합니다. 반환된 데이터는 JSON으로 인코딩되어 JavaScript 클라이언트에 브로드캐스트됩니다. toBroadcast 메소드의 예를 살펴보겠습니다.broadcast 通道使用 Laravel 的 event broadcasting 服务广播通知,它允许 JavaScript 客户端实时捕获通知。如果通知支持广播,你就需要在通知类上定义 toBroadcast 方法。此方法接受 $notifiable 实体作为参数,并返回 BroadcastMessage 实例。返回的数据将被编码为 JSON 并广播给 JavaScript 客户端。我们来看一个 toBroadcast 方法示例

rrreee

广播队列配置

所有的广播通知都被放入广播队列。想要配置用于广播操作的队列连接或者队列名称,需要使用 BroadcastMessageonConnectiononQueue 方法:

rrreee

{tip} 除了指定的数据,广播通知还包含 type 域,它包括通知类的类名。

监听通知

通知将会以格式化为 {notifiable}.{id} 的形式在私有频道上广播,因此,如果你要发送通知到 ID 为  1 的  AppUser 实例,那么该通知将会在私有频道 App.User.1 上进行广播,如果使用了 Laravel Echo,可以使用辅助函数  notification 轻松在某个频道上监听通知:

rrreee

自定义通知通道

如果你想要自定义被通知实体在某个通道上接收广播通知,可以在被通知实体上定义一个  receivesBroadcastNotificationsOn 方法:

rrreee

短信(SMS)通知

预备知识

Laravel 基于 Nexmo 发送短信通知,在使用 Nexmo 发送通知前,需要安装对应 Composer 依赖包 laravel/nexmo-notification-channel

rrreee

下一步,你需要在配置文件 config/services.php 中进行相应配置。你可以参考以下示例配置:

rrreee

sms_from  配置项就是你用于发送短信消息的手机号码,你需要在 Nexmo 控制面板中为应用生成一个手机号码。

格式化短信通知

如果通知支持以短信方式发送,那么你需要在通知类上定义一个 toNexmo 方法。该方法接收一个 $notifiable 实体并返回  IlluminateNotificationsMessagesNexmoMessage 实例:

rrreee

Unicode 内容

如果你的短信消息包含 Unicode 字符,需要在构造 NexmoMessage 实例时调用 unicoderrreee

브로드캐스트 대기열 구성

모든 브로드캐스트 알림은 브로드캐스트 대기열에 저장됩니다. 브로드캐스트 작업에 대한 대기열 연결 또는 대기열 이름을 구성하려면 BroadcastMessageonConnectiononQueue 메서드를 사용해야 합니다.

rrreee

{tip} 브로드캐스트 알림에는 지정된 데이터 외에도 알림 클래스의 클래스 이름이 포함된 type 필드도 포함되어 있습니다.

🎜🎜🎜알림 듣기🎜🎜알림은 비공개 채널에서 {notified}.{id} 형식으로 지정되므로 ID가 1AppUser 인스턴스에 알림을 보내려는 경우 알림은 비공개 채널 App.User.1에서 브로드캐스팅됩니다. Laravel Echo를 사용하는 경우 도우미 기능인 알림을 사용하여 채널의 알림을 쉽게 모니터링할 수 있습니다. 🎜rrreee

사용자 정의 알림 채널

🎜원하는 경우 특정 채널에서 브로드캐스트 알림을 받도록 알림을 받은 엔터티를 사용자 정의하려면 알림을 받은 엔터티에 receivesBroadcastNotificationsOn 메서드를 정의할 수 있습니다. 🎜rrreee🎜
🎜🎜< h2>SMS 알림🎜🎜🎜🎜Prerequisites🎜🎜Laravel은 Nexmo🎜을 기반으로 합니다. SMS 알림을 보내려면, Nexmo를 사용하여 알림을 보내기 전에 해당 Composer 종속성 패키지 laravel/nexmo-notification-channel을 설치해야 합니다. 🎜rrreee🎜다음으로 구성 파일 config/services를 구성해야 합니다. PHP에서 적절하게 구성하세요. 다음 샘플 구성을 참조할 수 있습니다. 🎜rrreee🎜sms_from 구성 항목은 SMS 메시지를 보내는 데 사용하는 휴대폰 번호입니다. Nexmo 컨트롤에서 애플리케이션에 대한 휴대폰 번호를 생성해야 합니다. 패널. 🎜🎜🎜🎜🎜형식화된 SMS 알림🎜🎜알림이 SMS를 통한 전송을 지원하는 경우 알림 클래스에서 toNexmo 메소드를 정의해야 합니다. 이 메소드는 $notifying 엔터티를 수신하고 IlluminateNotificationsMessagesNexmoMessage 인스턴스를 반환합니다. 🎜rrreee

유니코드 콘텐츠

🎜SMS 메시지에 유니코드 문자가 포함된 경우 다음을 수행해야 합니다. 구성 NexmoMessage 인스턴스일 때 unicode 메서드를 호출하세요: 🎜rrreee🎜🎜🎜🎜

"보내기" 번호를 사용자 지정하세요

구성 파일 config/services.php에 지정된 휴대폰 번호가 아닌 다른 번호를 통해 알림을 보내려면 NexmoMessage를 사용하세요. > 인스턴스의 from 메소드: config/services.php 中指定的手机号不同的其他号码发送通知,可以使用  NexmoMessage 实例上的 from 方法:

rrreee

短信通知路由

使用 nexmo 通道发送通知的时候,通知系统会自动在被通知实体上查找 phone_number 属性。如果你想要自定义通知被发送到的手机号码,可以在该实体上定义一个 routeNotificationForNexmo 方法:

rrreee

Slack 通知

预备知识

在通过 Slack 发送通知前,必须通过 Composer 安装 Slack 通知通道:

rrreee

此外,你还要为 Slack 组配置一个 "Incoming Webhook" 集成。该集成会在你进行 Slack 通知路由 的时候提供一个 URL。

格式化 Slack 通知

如果通知支持通过 Slack 消息发送,则需要在通知类上定义一个 toSlack 方法,该方法接收一个 $notifiable 实体并返回 IlluminateNotificationsMessagesSlackMessage 实例,该实例包含文本内容以及格式化额外文本或数组字段的 “附件”。让我们来看一个基本的 toSlack 使用示例:

rrreee

在这个例子中,我们只发送一行简单的文本到 Slack,最终创建的消息如下:

2.png

Customizing The Sender & Recipient

你可以使用 fromto 方法自定义发送者和接收者, from 方法接收一个用户名和 emoji 标识,而 torrreee

SMS 알림 라우팅 nexmo 채널을 사용하는 경우 알림을 보내면 알림 시스템은 알림을 받은 엔터티에서 phone_number 속성을 ​​자동으로 찾습니다. 알림이 전송되는 휴대폰 번호를 사용자 정의하려면 이 엔터티에 routeNotificationForNexmo 메서드를 정의할 수 있습니다:

rrreee

Slack 알림

Prerequisites

3.pngSlack을 통해 알림을 보내기 전에 Composer를 통해 Slack 알림 채널을 설치해야 합니다.

rrreee
또한 다음을 구성해야 합니다. Slack 그룹
"Incoming Webhook"🎜 통합. 이 통합은 Slack 알림 라우팅🎜 시 URL을 제공합니다. 🎜🎜🎜🎜🎜Slack 알림 형식 지정🎜🎜알림이 Slack 메시지를 통한 전송을 지원하는 경우 알림 클래스에서 toSlack 메서드를 정의해야 합니다. 이 메소드는 $notifying 엔터티를 수신하고 텍스트 콘텐츠와 서식이 지정된 추가 텍스트 또는 배열 필드의 "첨부 파일"이 포함된 IlluminateNotificationsMessagesSlackMessage 인스턴스를 반환합니다. toSlack의 기본 사용 예를 살펴보겠습니다. 🎜rrreee🎜이 예에서는 간단한 텍스트 한 줄을 Slack에 보내고 생성된 최종 메시지는 다음과 같습니다. 🎜🎜🎜2.png🎜🎜

발신자 및 수신자 사용자 정의

🎜 fromto 메소드를 사용하여 발신자와 수신자를 사용자 정의할 수 있습니다. from 메소드는 사용자 이름과 이모티콘 식별자를 받고, to 메소드는 채널이나 사용자 이름을 받습니다. 🎜rrreee🎜 사진을 로고로 사용하여 이모티콘을 대체할 수도 있습니다. 🎜rrreee 🎜🎜🎜🎜🎜 Slack 첨부 파일🎜🎜 Slack 메시지에 "첨부 파일"을 추가할 수도 있습니다. 단순한 문자 메시지에 비해 첨부 파일은 더 다양한 형식을 선택할 수 있습니다. 이 예에서는 더 많은 예외 세부 정보를 볼 수 있는 링크를 포함하여 애플리케이션에서 발생한 예외 오류에 대한 알림을 보냅니다. 🎜rrreee🎜위 코드는 다음 Slack 메시지를 생성합니다. 🎜🎜🎜🎜🎜🎜

첨부 파일을 사용하면 사용자에게 표시할 배열 데이터를 지정할 수도 있습니다. 가독성을 높이기 위해 주어진 배열은 표 형식으로 표시됩니다.

rrreee

위 코드는 다음 Slack 메시지를 생성합니다.

4.png

Markdown 첨부 파일 콘텐츠

일부 첨부 파일 필드에 Markdown이 포함된 경우 markdown 메서드를 사용하여 Slack을 빌드하여 Markdown 형식으로 작성된 첨부 파일 필드를 구문 분석하고 표시할 수 있습니다. 이 값은 지원됩니다. 메소드에는 pretext , text 또는 field가 포함됩니다. Slack의 형식 지정에 대해 자세히 알아보려면 Slack API 문서를 확인하세요. markdown 方法来构建 Slack 用以解析并显示以 Markdown 格式编写的附件字段,该方法支持的值包括  pretexttextfields。想要了解更多关于 Slack 格式化的信息,查看 Slack API 文档

rrreee

Slack 通知路由

要路由 Slack 通知到适当的位置,需要在被通知的实体上定义一个 routeNotificationForSlack 方法,这将会返回通知被发送到的 Webhook URL。Webhook URL 可通过在 Slack 组上添加一个 "Incoming Webhook" 服务来生成:

rrreee

本地化通知

Laravel 允许您以当前语言环境之外的其他语言发送通知,并且会在通知队列时记住该语言环境。

要实现这一点, IlluminateNotificationsNotification 类提供了一个 locale 方法来设置所需的语言。在格式化通知时,应用程序将更改为此语言设置,然后在格式化完成后还原为以前的语言设置:

rrreee

多重通知的本地化也可通过 Notification  Facade 实现:

rrreee

用户首选语言区域设置

有些情况下,应用程序保存了每个用户的首选语言区域设置。通过在模型上实现 HasLocalePreference 契约,可以指定 Laravel 在发送通知时使用用户保存的首选语言设置:

rrreee

实现接口后,Laravel 将在向模型发送通知和邮件时自动使用首选区域设置。因此,使用此接口时不需要调用 locale 方法:

rrreee

通知事件

当通知被发送后,通知系统会触发 IlluminateNotificationsEventsNotificationSent 事件,该事件实例包含被通知的实体(如用户)和通知实例本身。你可以在 EventServiceProvider 中为该事件注册监听器:

rrreee

{提示}  在 EventServiceProvider 中注册监听器之后,使用 Artisan 命令 event:generate 可以快速生成监听器类。

在事件监听器中,可以访问事件的 notifiable、  notification 和  channel 属性了解通知接收者和通知本身的更多信息:

rrreee

自定义通道

Laravel 为我们提供了多种通知通道,但是尝试编写自定义通道驱动以通过其他通道发送通知,也很简单。首先定义一个包含 send 方法的类,该方法接收两个参数:  $notifiable$notificationrrreee

🎜

Slack 알림 라우팅

🎜Slack 알림을 적절한 위치로 라우팅하려면 알림을 받은 엔터티 코드에 routeNotificationForSlack 메소드를 사용하면 알림이 전송되는 Webhook URL이 반환됩니다. Slack 그룹에 "수신 웹훅" 서비스를 추가하여 웹훅 URL을 생성할 수 있습니다. 🎜rrreee🎜🎜

알림 현지화

🎜Laravel을 사용하면 보내기 현재 로캘이 아닌 다른 언어로 알림을 보내며 대기열에 알릴 때 로캘이 기억됩니다. 🎜🎜이를 달성하기 위해 IlluminateNotificationsNotification 클래스는 원하는 언어를 설정하는 locale 메서드를 제공합니다. 알림 형식을 지정하면 애플리케이션이 이 언어 설정으로 변경되고 형식 지정이 완료되면 이전 언어 설정으로 되돌아갑니다. 🎜rrreee🎜 알림 Facade를 통해 여러 알림의 현지화도 가능합니다. 🎜rrreee

사용자 선호 로케일

🎜어떤 경우에는 애플리케이션이 각 사용자의 선호 로케일을 저장합니다. 모델에 HasLocalePreference 계약을 구현하면 Laravel이 알림을 보낼 때 사용자가 저장한 기본 언어 설정을 사용하도록 지정할 수 있습니다: 🎜rrreee🎜인터페이스를 구현한 후 Laravel은 알림을 보낼 때 자동으로 기본 언어를 사용합니다. 모델 지역 설정으로 이메일을 보냅니다. 따라서 이 인터페이스를 사용할 때 locale 메소드를 호출할 필요가 없습니다: 🎜rrreee🎜🎜

알림 이벤트

🎜알림이 전송 후인 경우 알림 시스템은 IlluminateNotificationsEventsNotificationSent 이벤트를 트리거합니다. 이벤트 인스턴스에는 알림을 받은 엔터티(예: 사용자)와 알림 인스턴스 자체가 포함됩니다. EventServiceProvider에서 이 이벤트에 대한 리스너를 등록할 수 있습니다: 🎜rrreee
🎜{Tip} EventServiceProvider에서 리스너를 등록한 후 Artisan 명령어 event를 사용하세요. generate는 리스너 클래스를 빠르게 생성할 수 있습니다. 🎜
🎜이벤트 리스너에서 이벤트의 notified, notificationchannel 속성에 액세스하여 알림에 대해 알아볼 수 있습니다. 수신자 및 알림 자체 추가 정보: 🎜rrreee🎜🎜

맞춤 채널

🎜Laravel은 여러 알림 채널을 제공하지만 맞춤 채널을 작성해 보세요. 채널 다른 채널을 통해 알림을 보내는 드라이버도 간단합니다. 먼저 $notifying$notification이라는 두 개의 매개변수를 받는 send 메서드를 포함하는 클래스를 정의합니다.🎜rrreee

알림 채널 클래스가 정의되면 via 메서드를 사용하여 애플리케이션에서 클래스 이름을 반환할 수 있습니다.

rrreee
이 기사는 LearnKu.com 웹사이트에 처음 게시되었습니다.