Laravel開發:如何使用Laravel Notification發送通知?

laravel是一種廣泛使用的php web應用程序框架,它提供了現代的、優雅的、功能豐富的語法來構建web應用程序。laravel框架提供廣泛的工具和功能,其中包括通知的發送。通知是向用戶或其他系統發送視覺或語音消息的技術。通知可以是簡單的警告,也可以是復雜的指示,它們可以是異步的,因此可以在長時間執行的操作中使用。

在本文中,我們將學習如何使用Laravel Notification來發送通知。 我們還將了解通知的類型、事件和頻道。我們的目標是創建一個簡單的Web應用程序,使用Laravel通知發送通知并了解它們的不同類型。

前提條件

在進入本文內容之前,我們需要確保以下要求得到滿足:

  1. 你已經在本地或服務器上安裝了Laravel。
  2. 你已經熟悉Laravel框架并了解如何創建控制器、路由和視圖。
  3. 你已經安裝了數據庫mysql、postgresql等)并在Laravel設置文件中進行了設置。
  4. 你已經設置好了郵件相關的配置(這對于一些通知類型是必需的)。

Laravel Notifications

Laravel Notifications 是一個強大的類來簡化處理通知。通知可以發送到多個頻道,包括電子郵件、短信、郵件和Slack這樣的即時消息應用程序。通過 Laravel Notifications,你可以創建具有指定頻道的通知,并快速將其發送給用戶。 通知可以異步處理,以避免開始發送通知時的延遲。

Laravel Notifications 基本上有以下兩個部分:

  1. 消息本身:用于在應用程序中聲明并定義通知的消息體。
  2. 通道:用于發送和處理不同類型的通知消息。

大多數開發者通常將通知類型定義為應用程序內的模型方法,以便在需要發送通知時調用該方法。

在 Laravel 中創建通知

Laravel 的通知基本上是簡單的PHP類,它繼承了框架的 IlluminateNotificationsNotification base 類。每個通知又有多種通道可以發送,包括電子郵件、Slack 和自定義 webhook 等。

要使用通知,在你的應用程序中定義通知類。 通知類表示通知的富文本消息(消息正文),在通知消息發送到頻道之前將其創建為一個消息實例。接下來,通過不同的通道發送此通知以供處理。

例如,我們可以創建一個提醒用戶其訂閱即將到期的消息通知。要發送此通知,我們可以在 lavarel 應用程序中創建一個新的通知類,比如:

php artisan make:notification SubscriptionEnding

通過通知發送郵件

現在我們已經創建了一個 SubscriptionEnding 通知,接下來我們可以通過郵件發送該通知。

您需要配置 Laravel 的 mail 系統以便發送電子郵件。您可以通過使用 Artisan 來確保您的 SMTP/IMAP 設置正確,以便在應用程序中使用郵件服務。

php artisan config:cache

現在我們已經配置好了郵件相關的設置,我們需要在通知類中實現toMail()方法,我們在這個方法中編寫郵件模板:

class SubscriptionEnding extends Notification {     use Queueable;      public function __construct($data)     {         $this->data = $data;     }        public function via($notifiable)     {         return ['mail'];     }          public function toMail($notifiable)     {         return (new MailMessage)                     ->line('Hi ' . $this->data['name'] . ', your subscription is about to end in ' . $this->data['days'] . ' days. Please log in to your account and renew your subscription to continue using our services.')                     ->action('Renew Subscription', url('/subscription'))                     ->line('Thank you for using our service.');     }        public function toArray($notifiable)     {         return [             //         ];     } }

如果我們需要自定義郵件模板的話,可以使用 Laravel 的郵件視圖來編寫自己的 html/css 模板:

public function toMail($notifiable) {     return (new MailMessage)->markdown('emails.subscription-ending', [         'name' => $this->data['name'],         'days' => $this->data['days']     ]); }

最后一步是將我們的通知發送給某個用戶,例如:

$user = User::find(1)->notify(new SubscriptionEnding(['name' => 'John Doe', 'days' => 5]));

我們已經成功地在訂閱快過期時發送了一封電子郵件通知。通過按照這些步驟,可以輕松創建自定義的通知、為此通知編寫自定義頻道和消息,并通過這些通知發送郵件、短信和其他通知。

在路由模型綁定上使用通知

路由模型綁定是 Laravel 模型中非常強大的功能之一。所謂路由綁定,即讓 Laravel 自動找到匹配模型的其它綁定,將它自動注入到控制器方法中。

在Laravel中將調用模型實例到路由中的綁定稱為“路由模型綁定”。在大多數情況下,我們在路由中使用一個特定的標識符來查找、檢索和獲取對象。但是,在路由模型綁定中,Laravel會自動將模型載入到路由的參數中。

Laravel Notifications 也可以使用路由模型綁定。這是一個簡單的例子,演示了在路由模型綁定上使用 Notification。

我們可以使用 Artisan 靜態命令快速創建示例控制器和路由:

php artisan make:controller UserController --resource --no-model

在模型中定義上下文:

class User extends Authenticatable {     public function routeNotificationForMail()     {         return $this->email;     } }

接下來,我們需要在路由文件中定義,比如我們將路由放置于 routes/web.php 文件中:

Route::get('users/{user}', 'UserController@show');

在控制器方法中實現 Notification:

class UserController extends Controller {     public function show(User $user)     {         $details = [             'title' => '你好?。?,             'body' => '感謝你使用我們的系統!'         ];            $user->notify(new AppNotificationsSimpleNotification($details));            return view('users.show', ['user' => $user]);     } }

這將向用戶發送一條通知,通知應包括一個標題和正文。

結論

Laravel Notification 是向你的 Web 應用程序中添加通知功能的有效方式。通過 Laravel 的強大系統,我們能夠輕松地定義和處理通知,并使用各種不同的通道來發送通知。 在這篇文章中,我們已經學習了如何使用 Laravel Notification 來發送通知,包括電子郵件、短信、郵件和 Slack。 我們還探討了 Laravel Notification 的其他功能,包括通知類型、事件和頻道。

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享