Blade로 Chirper 구축 - 알림 및 이벤트

1 개요

07. Notifications & Events
07. 알림 및 이벤트

https://bootcamp.laravel.com/blade/notifications-and-events

이메일 발송 지원 외에도, Laravel은 이메일, SMS, Slack 등 다양한 전달 채널을 통한 알림 전송을 지원합니다. 또한, 커뮤니티에서 구축한 다양한 알림 채널을 통해 수십 가지 다른 채널로 알림을 보낼 수 있습니다! 알림은 데이터베이스에 저장되어 웹 인터페이스에서 표시될 수도 있습니다.

2 알림 생성하기

Artisan이 또 한 번, 아래 명령어로 모든 어려운 작업을 대신해 줄 수 있습니다:

php artisan make:notification NewChirp

이 명령어는 app/Notifications/NewChirp.php에 커스터마이징할 준비가 된 새로운 알림을 생성합니다.

이제 NewChirp 클래스를 열어 새로 작성된 Chirp를 수락하고, 메시지에 작성자의 이름과 메시지 일부를 포함하도록 커스터마이징해 보겠습니다:

app/Notifications/NewChirp.php
<?php
namespace App\Notifications;
 
use App\Models\Chirp;
use Illuminate\Bus\Queueable;
use Illuminate\Support\Str;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
 
class NewChirp extends Notification
{
    use Queueable;
 
    /**
     * Create a new notification instance.
     */
    public function __construct(public Chirp $chirp)
    {
        //
    }
 
    /**
     * Get the mail representation of the notification.
     */
    public function toMail(object $notifiable): MailMessage
    {
        return (new MailMessage)
                    ->subject("New Chirp from {$this->chirp->user->name}")
                    ->greeting("New Chirp from {$this->chirp->user->name}")
                    ->line(Str::limit($this->chirp->message, 50))
                    ->action('Go to Chirper', url('/'))
                    ->line('Thank you for using our application!');
    }
    ...
}

ChirpController 클래스의 store 메소드에서 직접 알림을 보낼 수 있지만, 그렇게 하면 컨트롤러의 작업이 많아져 요청이 느려질 수 있습니다. 특히 데이터베이스를 쿼리하고 이메일을 보내는 작업이 추가되기 때문입니다.

대신, 이벤트를 디스패치하여 이를 백그라운드 큐에서 처리하도록 만들어 애플리케이션이 빠르게 반응할 수 있도록 합시다.

3 이벤트 생성하기

4 이벤트 디스패치하기

5 이벤트 리스너 생성하기

6 테스트하기

6.1 프로덕션에서 이메일 보내기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}