Rumah  >  Artikel  >  rangka kerja php  >  Pembangunan Laravel: Bagaimana untuk menghantar pemberitahuan menggunakan Pemberitahuan Laravel?

Pembangunan Laravel: Bagaimana untuk menghantar pemberitahuan menggunakan Pemberitahuan Laravel?

王林
王林asal
2023-06-13 14:55:461860semak imbas

Laravel ialah rangka kerja aplikasi web PHP yang digunakan secara meluas yang menyediakan sintaks moden, elegan dan kaya ciri untuk membina aplikasi web. Rangka kerja Laravel menyediakan pelbagai alat dan fungsi, termasuk menghantar pemberitahuan. Pemberitahuan ialah teknologi yang menghantar mesej visual atau suara kepada pengguna atau sistem lain. Pemberitahuan boleh berupa amaran mudah atau arahan yang rumit, dan ia boleh menjadi tak segerak supaya ia boleh digunakan semasa operasi yang berjalan lama.

Dalam artikel ini, kita akan belajar cara menggunakan Pemberitahuan Laravel untuk menghantar pemberitahuan. Kami juga akan melihat jenis pemberitahuan, acara dan saluran. Matlamat kami adalah untuk mencipta aplikasi web mudah yang menggunakan pemberitahuan Laravel untuk menghantar pemberitahuan dan memahami jenisnya yang berbeza.

Prasyarat

Sebelum memasukkan kandungan artikel ini, kami perlu memastikan bahawa keperluan berikut dipenuhi:

  1. Anda telah memasang Laravel secara setempat atau pada pelayan .
  2. Anda sudah biasa dengan rangka kerja Laravel dan memahami cara membuat pengawal, laluan dan pandangan.
  3. Anda telah memasang pangkalan data (MySQL, PostgreSQL, dll.) dan menyediakannya dalam fail tetapan Laravel.
  4. Anda telah menyediakan konfigurasi berkaitan e-mel (ini diperlukan untuk beberapa jenis pemberitahuan).

Pemberitahuan Laravel

Pemberitahuan Laravel ialah kelas yang berkuasa untuk memudahkan pengendalian pemberitahuan. Pemberitahuan boleh dihantar ke berbilang saluran, termasuk e-mel, SMS, Mel dan aplikasi pemesejan segera seperti Slack. Dengan Pemberitahuan Laravel, anda boleh membuat pemberitahuan dengan saluran tertentu dan menghantarnya dengan cepat kepada pengguna. Pemberitahuan boleh diproses secara tak segerak untuk mengelakkan kelewatan dalam mula menghantar pemberitahuan.

Pemberitahuan Laravel pada asasnya mempunyai dua bahagian berikut:

  1. Mesej itu sendiri: badan mesej yang digunakan untuk mengisytiharkan dan mentakrifkan pemberitahuan dalam aplikasi.
  2. Saluran: digunakan untuk menghantar dan memproses pelbagai jenis mesej pemberitahuan.

Kebanyakan pembangun biasanya mentakrifkan jenis pemberitahuan sebagai kaedah model dalam aplikasi supaya kaedah dipanggil apabila pemberitahuan perlu dihantar.

Mencipta pemberitahuan dalam Laravel

Pemberitahuan Laravel pada asasnya ialah kelas PHP mudah yang mewarisi kelas asas IlluminateNotificationsNotification rangka kerja. Setiap pemberitahuan boleh dihantar melalui berbilang saluran, termasuk e-mel, Slack dan webhook tersuai.

Untuk menggunakan pemberitahuan, tentukan kelas pemberitahuan dalam aplikasi anda. Kelas pemberitahuan mewakili mesej teks kaya (badan mesej) pemberitahuan, yang dibuat sebagai contoh mesej sebelum mesej pemberitahuan dihantar ke saluran. Seterusnya, hantar pemberitahuan ini melalui saluran lain untuk diproses.

Sebagai contoh, kami boleh membuat pemberitahuan mesej yang mengingatkan pengguna bahawa langganan mereka akan tamat tempoh. Untuk menghantar pemberitahuan ini, kami boleh membuat kelas pemberitahuan baharu dalam aplikasi Lavarel, seperti:

php artisan make:notification SubscriptionEnding

Hantar e-mel melalui pemberitahuan

Sekarang kami telah mencipta pemberitahuan Tamat Langganan, seterusnya kami Pemberitahuan ini boleh dihantar melalui e-mel.

Anda perlu mengkonfigurasi sistem Mel Laravel untuk menghantar e-mel. Anda boleh menggunakan Artisan untuk memastikan tetapan SMTP/IMAP anda betul untuk menggunakan perkhidmatan mel dalam aplikasi anda.

php artisan config:cache

Sekarang kami telah mengkonfigurasi tetapan berkaitan e-mel, kami perlu melaksanakan kaedah toMail() dalam kelas pemberitahuan Kami menulis templat e-mel dalam kaedah ini:

class SubscriptionEnding extends Notification
{
    use Queueable;

    public function __construct($data)
    {
        $this->data = $data;
    }
  
    public function via($notifiable)
    {
        return ['mail'];
    }
    
    public function toMail($notifiable)
    {
        return (new MailMessage)
                    ->line('Hi ' . $this->data['name'] . ', your subscription is about to end in ' . $this->data['days'] . ' days. Please log in to your account and renew your subscription to continue using our services.')
                    ->action('Renew Subscription', url('/subscription'))
                    ->line('Thank you for using our service.');
    }
  
    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

Jika kami perlu menyesuaikan Untuk menentukan templat e-mel, anda boleh menggunakan paparan e-mel Laravel untuk menulis templat HTML/CSS anda sendiri:

public function toMail($notifiable)
{
    return (new MailMessage)->markdown('emails.subscription-ending', [
        'name' => $this->data['name'],
        'days' => $this->data['days']
    ]);
}

Langkah terakhir ialah menghantar pemberitahuan kami kepada pengguna, contohnya:

$user = User::find(1)->notify(new SubscriptionEnding(['name' => 'John Doe', 'days' => 5]));

kami Berjaya menghantar pemberitahuan e-mel apabila langganan hampir tamat tempoh. Dengan mengikuti langkah-langkah ini, anda boleh membuat pemberitahuan tersuai dengan mudah, menulis saluran dan mesej tersuai untuknya dan menghantar e-mel, mesej teks dan pemberitahuan lain melaluinya.

Menggunakan pemberitahuan pada pengikatan model laluan

Pengikatan model laluan ialah salah satu ciri yang sangat berkuasa dalam model Laravel. Pengikatan laluan yang dipanggil membolehkan Laravel mencari pengikatan lain secara automatik yang sepadan dengan model dan secara automatik menyuntiknya ke dalam kaedah pengawal.

Dalam Laravel, pengikatan contoh model panggilan ke laluan dipanggil "pengikatan model laluan". Dalam kebanyakan kes, kami menggunakan pengecam khusus dalam penghalaan untuk mencari, mendapatkan semula dan mendapatkan objek. Walau bagaimanapun, dalam pengikatan model laluan, Laravel akan memuatkan model secara automatik ke dalam parameter laluan.

Pemberitahuan Laravel juga boleh menggunakan pengikatan model laluan. Ini ialah contoh mudah yang menunjukkan penggunaan Pemberitahuan pada pengikatan model penghalaan.

Kami boleh mencipta pengawal sampel dan laluan dengan cepat menggunakan arahan statik Artisan:

php artisan make:controller UserController --resource --no-model

Tentukan konteks dalam model:

class User extends Authenticatable
{
    public function routeNotificationForMail()
    {
        return $this->email;
    }
}

Seterusnya, kita perlu mentakrifkannya dalam laluan file , sebagai contoh, kami meletakkan laluan dalam fail route/web.php:

Route::get('users/{user}', 'UserController@show');

Laksanakan Pemberitahuan dalam kaedah pengawal:

class UserController extends Controller
{
    public function show(User $user)
    {
        $details = [
            'title' => '你好啊!',
            'body' => '感谢你使用我们的系统!'
        ];
  
        $user->notify(new AppNotificationsSimpleNotification($details));
  
        return view('users.show', ['user' => $user]);
    }
}

Ini akan menghantar pemberitahuan kepada pengguna, dan pemberitahuan harus mengandungi tajuk dan teks.

Kesimpulan

Pemberitahuan Laravel ialah cara yang berkesan untuk menambah fungsi pemberitahuan pada aplikasi web anda. Dengan sistem Laravel yang berkuasa, kami boleh mentakrif dan mengendalikan pemberitahuan dengan mudah serta menggunakan pelbagai saluran yang berbeza untuk menghantar pemberitahuan. Dalam artikel ini, kami telah mempelajari cara menggunakan Pemberitahuan Laravel untuk menghantar pemberitahuan termasuk e-mel, SMS, mel dan Slack. Kami juga meneroka ciri lain Pemberitahuan Laravel, termasuk jenis pemberitahuan, acara dan saluran.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk menghantar pemberitahuan menggunakan Pemberitahuan Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn