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
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 NotificationRealTimeTạ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?