Từ phiên bản 5.3, Laravel đã cung cấp một tính năng rất hay đó là gửi thông báo (notification) qua một loạt các kênh phân phối, bao gồm mail, tin nhẵn SMS (thông qua Nexmo) và Slack. Notification cũng có thể được lưu trong database để có thể hiển thị trên giao diện web. Rất dễ dàng để xây dựng một lớp gửi thông báo, ví dụ như sau:

Và việc bạn cần làm để gửi thông báo cho một thành viên bất kỳ đơn giản như sau:

Cách tạo lớp Notification trong Laravel

Bạn thực hiện tạo lớp Notification thông qua Artisan bằng câu lệnh sau:

Hệ thống sẽ tạo ra một lớp notification NewPostIsPublished.php tại thư mục app/Notifications. Trong mỗi lớp này, sẽ có một phương thức là via() khai báo các kênh mà Laravel sẽ gửi tới, hiện tại các kênh mà mặc định laravel bao gồm: email, sms (nexmo), broadcast, databases và slack. Ví dụ:

Dưới đây mình mô tả cách đơn giản nhất là truyền thông báo qua email, ngoài ra các cách khác bạn có thể tham khảo trên tài liệu chính thức của Laravel tại: https://laravel.com/docs/master/notifications.

Email notifications

Để gửi thông báo qua Email, bạn cần định nghĩa một phương thức toMail() trong lớp Notification trên. Phương thức này nhận một tham chiếu $notifiable và trả về Illuminate\Notifications\Messages\MailMessage instance. Mail có thể chứa các dòng chữ, hay các nút được gọi là “call to action”, để liên kết với một hành động nào đó. Xem một ví dụ:

Bạn có thể thay đổi giao diện Mail, màu nút bấm, thay đổi tên người nhận,… ở tài liệu của Laravel.

Gửi thông báo

Như ở đầu bài, để gửi một thông báo cho một thành viên bất kỳ, tại một đối tượng $user ta gọi đến phương thức notify() và truyền vào một đối tượng Notification, ví dụ:

Hoặc gọi thông qua Notification fades, ví dụ gửi toàn bộ thành viên:

Kết luận

Ở trên mình chỉ đưa ra như lời giới thiệu về Notification trong Laravel, để rõ hơn bạn hãy xem tài liệu Laravel mô tả rất chi tiết cách sử dụng cho tất cả các kênh phân phối khác nhau. Việc sử dụng Notification khiến ứng dụng chúng ta thêm phần tiện lợi, phân phối và quản lý các thông báo dễ dàng và chính chủ hơn là tự xây dựng hoặc dùng thư viện của bên thứ ba. Chúc các bạn thành công.

SHARE
Previous articleXây dựng Sitemap XML trong Laravel
Next articleRepository Pattern trong Laravel
Mình rất yêu thích việc lập trình web, đam mê việc nghiên cứu, tạo ra các sản phẩm có ích cho bản thân và cộng đồng. Ngoài việc coding ra thì mình còn thích vẽ và âm nhạc, được giao lưu chia sẻ cùng với mọi người. Hiện tại mình đang sống và làm việc tại Hồ Chí Minh, Việt Nam.

1 COMMENT

LEAVE A REPLY

Please enter your comment!
Please enter your name here