Lưu và gửi Notification real time trong laravel (ok)

https://viblo.asia/p/luu-va-gui-notification-real-time-trong-laravel-OeVKB3x0ZkW

Lưu và gửi Notification real time trong laravel

notificationRealtime

Notifications

Ngoài việc hỗ trợ gửi email, Laravel cũng hỗ trợ gửi thông báo trên nhiều channels khác, bao gồm mail, SMS và Slack. Thông báo cũng có thể được lưu trữ trong cơ sở dữ liệu để chúng có thể được hiển thị trong giao diện website của bạn.

Bài nay mình sẽ hướng dẩn bạn sử dụng database để lưu và hiển thi thông báo khi người dùng thực hiện 1 thao tác nào đó.

Đầu tiên bạn tạo 1 project laravel

composer create-project --prefer-dist laravel/laravel NotificationRealTime

Tạo 1 database rồi connect tới project của bạn

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_notification
DB_USERNAME=root
DB_PASSWORD=

Tạo bảng notification để lưu thông báo

Tiếp theo bạn dùng cấu lệnh artisan để tạo môt file TestNotification

file vừa được tạo nằm ở thư mục \app\Notifications\TestNotification.php.

Tại function via các bạn hãy sử dụng return database để dữ liệu được lưu lại trong db.

Sử dụng function toArray để event trả ra một data lưu vào bảng notifications.

Chúng ta sẻ sửa lại file đó như sau.

Tiếp đến chúng ta sẻ tạo màn hình đăng nhập đăng kí để tạo user sẻ nhận được thông báo.

chạy lênh php artisan make:auth và vào địa chỉ http://127.0.0.1:8000/register để đăng kí 1 user.

Tạo giao diện fake thông báo

Vào folder view trong thư mục resources để tạo ra file notificaton.blade.php

Tạo controller để gửi thông báo

Tạo controller bàng câu lệnh

Và sửa code lại như sau

Thêm route trong file routes\web.php

Truy cập vào địa chỉ http://127.0.0.1:8000/notification ta sẻ thấy 1 form để fake thông báo.

sau khi submit thì khi vào bảng notification bạn sẻ thấy thông báo được lưu lại

Hiển thị thông báo

Vào file resources\views\layouts\app.blade.php và thêm đoạn code sau trên đoạn code hiển thị thông tin user để hiển thị notification.

Trong bảng notification có 1 trường read_at để hiển thị thời gian bạn đã đọc thông báo. Chúng ta có thể sử dụng hàm $notification->markAsRead(); để đánh dấu là đã đọc.

Sử dụng pusher để thông báo realtime

Pusher là một dịch vụ cung cấp cho người dùng một serve ảo làm trung gian xử lý các dữ liệu với thời gian thực. Để dùng được pusher, chúng ta sẽ sử dụng package pusher/pusher-php-server, chạy lệnh sau để cài đặt

Đăng kí tài khoản và tạo app trên pusher.com

Các bạn truy cập vào web https://pusher.com/ đăng ký tài khoản sau đó đăng nhập và tạo app:

các bạn vào .env và sửa lại những dòng sau với các key xem trong phần detail của app mới tạo

vào config/app.php Loại bỏ comment ở dòng

Tạo event gửi notification bằng câu lệnh

và sửa lại nội dung như sau

Tiếp theo vào file controller lúc trước và sửa lại như sau

và thêm đoạn sử lý này vào

Thêm đoạn script sau vào file resources\views\layouts\app.blade.php để bắt sự kiện notification và hiển thị real time

Last updated

Was this helpful?