Tìm hiểu về notification trong Laravel 5.3(P2)
Bài đăng này đã không được cập nhật trong 3 năm
Ở 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 .....
1. Đầu tiên sau đây tôi xin demo một ví dụ nhỏ bằng cách gửi notification thông qua Slack.
- 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 App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use App\Notifications\InvoicePaid;
use Illuminate\Notifications\Messages\SlackMessage;
class InvoicePaid extends Notification
{
protected $user;
use Queueable;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct(\App\User $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 = App\User::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 :
2 . Sau đây là demo về gửi notification bằng Mail
Ở 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 App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use App\User;
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 \Illuminate\Notifications\Messages\MailMessage
*/
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 = App\User::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 !
TÀI LIỆU THAM KHẢO
All rights reserved