首頁 > php框架 > Laravel > 主體

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

王林
發布: 2023-06-13 14:55:46
原創
1864 人瀏覽過

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 的其他功能,包括通知類型、事件和頻道。

以上是Laravel開發:如何使用Laravel Notification發送通知?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板