विभिन्न घटनाओं (जैसे उपयोगकर्ता निर्माण, पासवर्ड रीसेट इत्यादि) के बाद एकाधिक ईमेल अधिसूचनाएं भेजना आसान बनाने के लिए, आप अपनी अधिसूचना और कार्य प्रबंधन को केंद्रीकृत करने के लिए कुछ कदम उठा सकते हैं। यह दृष्टिकोण प्रत्येक ईवेंट के लिए अलग कार्य या अधिसूचना बनाए बिना आपके काम को आसान और अधिक स्केलेबल बना देगा।
प्रत्येक अधिसूचना के लिए अलग-अलग नौकरियां बनाने के बजाय, आप एक एकल पुन: प्रयोज्य नौकरी बना सकते हैं जो अधिसूचना और उपयोगकर्ता को पैरामीटर के रूप में लेती है। इस तरह, एक ही कार्य का उपयोग विभिन्न सूचनाओं को संभालने के लिए किया जा सकता है।
namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Notifications\Notification; use App\Models\User; class SendEmailNotificationJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public $user; public $notification; /** * Create a new job instance. * * @param User $user * @param Notification $notification * @return void */ public function __construct(User $user, Notification $notification) { $this->user = $user; $this->notification = $notification; } /** * Execute the job. * * @return void */ public function handle() { // Send the notification $this->user->notify($this->notification); } }
इस सामान्यीकृत कार्य के साथ, आप एक ही कार्य का उपयोग करके विभिन्न प्रकार की ईमेल सूचनाएं भेज सकते हैं:
use App\Jobs\SendEmailNotificationJob; use App\Notifications\UserWelcomeNotification; use App\Models\User; $user = User::find(1); // Example user // Dispatch a welcome email notification SendEmailNotificationJob::dispatch($user, new UserWelcomeNotification()); // Dispatch a password reset notification SendEmailNotificationJob::dispatch($user, new PasswordResetNotification());
प्रत्येक घटना के बाद नौकरियों को मैन्युअल रूप से भेजने के बजाय, लारवेल का इवेंट-श्रोता आर्किटेक्चर आपको विशिष्ट घटनाओं (जैसे उपयोगकर्ता निर्माण) के आधार पर सूचनाओं और नौकरियों को स्वचालित रूप से ट्रिगर करने की अनुमति देता है।
आप किसी ईवेंट को परिभाषित कर सकते हैं जैसे UserCreated:
php artisan make:event UserCreated
namespace App\Events; use App\Models\User; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; class UserCreated { use Dispatchable, SerializesModels; public $user; public function __construct(User $user) { $this->user = $user; } }
आप एक श्रोता बना सकते हैं जो ईवेंट सक्रिय होने पर एक अधिसूचना भेजता है:
php artisan make:listener SendUserWelcomeNotification --event=UserCreated
namespace App\Listeners; use App\Events\UserCreated; use App\Jobs\SendEmailNotificationJob; use App\Notifications\UserWelcomeNotification; class SendUserWelcomeNotification { public function handle(UserCreated $event) { // Dispatch the email notification job SendEmailNotificationJob::dispatch($event->user, new UserWelcomeNotification()); } }
जब भी कोई उपयोगकर्ता बनाया जाता है, तो आप ईवेंट को सक्रिय कर सकते हैं, और लारवेल स्वचालित रूप से बाकी को संभाल लेगा:
use App\Events\UserCreated; $user = User::create($data); event(new UserCreated($user));
यह दृष्टिकोण आपको अपने व्यावसायिक तर्क से सूचनाओं को संभालने के तर्क को अलग करने की अनुमति देता है, जिससे सिस्टम अधिक स्केलेबल हो जाता है।
यदि आपके पास कई समान सूचनाएं हैं (उदाहरण के लिए, उपयोगकर्ता-संबंधित सूचनाएं जैसे स्वागत ईमेल, पासवर्ड रीसेट इत्यादि), तो आप एक अधिसूचना सेवा बना सकते हैं जो सभी उपयोगकर्ता सूचनाओं को केंद्रीकृत तरीके से संभालती है।
namespace App\Services; use App\Models\User; use App\Jobs\SendEmailNotificationJob; use App\Notifications\UserWelcomeNotification; use App\Notifications\PasswordResetNotification; class NotificationService { public function sendUserWelcomeEmail(User $user) { SendEmailNotificationJob::dispatch($user, new UserWelcomeNotification()); } public function sendPasswordResetEmail(User $user) { SendEmailNotificationJob::dispatch($user, new PasswordResetNotification()); } // You can add more methods for different types of notifications }
अपने नियंत्रकों या ईवेंट श्रोताओं में, अब आप बस सेवा को कॉल कर सकते हैं:
$notificationService = new NotificationService(); $notificationService->sendUserWelcomeEmail($user);
यह दृष्टिकोण आपके कोड को DRY (खुद को न दोहराएं) रखने में मदद करता है और जब आपके पास भेजने के लिए कई ईमेल सूचनाएं हों तो इसे बनाए रखना आसान हो जाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3