Tìm hiểu về notification trong Laravel 5.3(P2)
Ở bài viết trước tôi có giới thiệu qua một chút về notification . Ở bài viết này tôi xin đi chi tiết hơn về gửi notification trong Slack , SMS ..... Bước 1 : Đầu tiên chúng ta sẽ tạo ra một notification bằng cách sử dụng câu lệnh trong terminal: php artisan make : notification ...
Ở bài viết trước tôi có giới thiệu qua một chút về notification . Ở bài viết này tôi xin đi chi tiết hơn về gửi notification trong Slack , SMS .....
- Bước 1 : Đầu tiên chúng ta sẽ tạo ra một notification bằng cách sử dụng câu lệnh trong terminal:
php artisan make:notification InvoicePaid
- Bước 2 : Sau đó chúng ta vào class InvoicePaid.php vừa được tạo trong thư mục Notifications . Nó sẽ được làm giống như dưới đây :
<?php namespace AppNotifications; use IlluminateBusQueueable; use IlluminateNotificationsNotification; use IlluminateContractsQueueShouldQueue; use IlluminateNotificationsMessagesMailMessage; use AppNotificationsInvoicePaid; use IlluminateNotificationsMessagesSlackMessage; class InvoicePaid extends Notification { protected $user; use Queueable; /** * Create a new notification instance. * * @return void */ public function __construct(AppUser $user) { $this->user = $user; } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { return ['slack']; } public function toSlack($notifiable) { return (new SlackMessage) ->success() ->content('today i feel lose something in my life'); } }
Sau đó ở model User.php , chúng ta sẽ thêm vào ý một function như sau :
public function routeNotificationForSlack() { return 'https://hooks.slack.com/services/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'; }
Trong route chúng ta sẽ chỉnh sửa lại một chút :
Route::get('/home', function(){ $user = AppUser::find(1); $user->notify(new InvoicePaid($user)); });
Đương nhiên chúng ta nên cài đặt thêm guzzle trong file composer
"guzzlehttp/guzzle": "~4.0"
Cuối cùng , chúng ta sẽ có được kết quả như hình dưới đây :
Ở ví dụ này tôi sẽ sử dụng mailtrap.io . Chúng ta sẽ vào trang này login sau đó tạo cho mình một inbox mới .
Sau đó nhìn trên hình chúng ta sẽ copy Username và Password config vào file .env
MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME="7a8e62475af533" MAIL_PASSWORD="830515dde5e323" MAIL_ENCRYPTION=null
Ngoài ra , khi chúng ta tạo một notification bằng lênh make:notification chúng ta đã có sắn các function cần thiết .
<?php namespace AppNotifications; use IlluminateBusQueueable; use IlluminateNotificationsNotification; use IlluminateContractsQueueShouldQueue; use IlluminateNotificationsMessagesMailMessage; use AppUser; class MailNoti extends Notification { protected $user; use Queueable; /** * Create a new notification instance. * * @return void */ public function __construct(User $user) { $this->user = $user; } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { return ['mail']; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return IlluminateNotificationsMessagesMailMessage */ public function toMail($notifiable) { return (new MailMessage) ->line('The introduction to the notification.') ->action('Notification Action', 'https://laravel.com') ->line('Thank you for using our application!'); } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ public function toArray($notifiable) { return [ // ]; } }
Ta chỉ cần thêm route trong file web.php:
Route::get('/home', function(){ $user = AppUser::find(1); $user->notify(new MailNoti($user)); });
Và kết quả chúng ta đã nhận được 1 notification trong mailtrap.io :
Hi vọng bài viết này có thể giúp đỡ được các bạn . Thank you !