Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)
इस आर्टिकल में, हम Laravel वेब फ्रेमवर्क में नोटिफिकेशन सिस्टम का पता लगाने जा रहे हैं। Laravel में नोटिफिकेशन सिस्टम आपको विभिन्न चैनलों पर यूज़र्स को नोटिफिकेशन्स भेजने की अनुमति देती है। आज, हम चर्चा करेंगे कि आप mail चैनल पर नोटिफिकेशन्स कैसे भेज सकते हैं।
नोटिफिकेशन की मूल बातें
एप्लीकेशन डेवलपमेंट के दौरान, आपको अक्सर विभिन्न स्टेट चंगेस के बारे में यूज़र्स को सूचित करने की आवश्यकता होती है। ऑर्डर स्टेटस बदल जाता है या सिक्योरिटी पर्पस के लिए अपनी लॉगिन एक्टिविटी के बारे में एक SMS भेजते समय यह ईमेल नोटिफिकेशन्स भेज सकता है। विशेष रूप से, हम उन मेस्सगेस के बारे में बात कर रहे हैं जो शार्ट हैं और केवल स्टेट चंगेस में इनसाइट प्रदान करते हैं।
Laravel पहले से ही एक इन-बिल्ट फीचर प्रदान करता है जो हमें कुछ समान नोटिफिकेशन्स प्राप्त करने में मदद करता है। वास्तव में, यह यूज़र्स को एक ब्रीज और एक मजेदार अनुभव नोटिफिकेशन मैसेज भेजता है!
उस दृष्टिकोण की सुंदरता यह है कि यह आपको विभिन्न चैनल नोटिफिकेशन्स से चुनने की अनुमति देता है। चलो जल्दी से Laravel द्वारा समर्थित विभिन्न नोटिफिकेशन चैनलों के माध्यम से आगे बड़े।
- Mail: नोटिफिकेशन्स यूज़र्स को ईमेल के रूप में भेजी जाएंगी।
- SMS: जैसा कि नाम से पता चलता है, यूज़र्स को अपने फोन पर SMS नोटिफिकेशन्स प्राप्त होंगी।
- Slack: इस मामले में, नोटिस Slack चैनलों पर भेजा जाएगा।
- Database: यह ऑप्शन आपको डेटाबेस में नोटिफिकेशन स्टोर करने की अनुमति देता है, क्या आप इसे डिस्प्ले करने के लिए एक कस्टम UI बनाना चाहते हैं।
विभिन्न नोटिफिकेशन चैनलों में, हम mail उदाहरण का उपयोग हमारे उदाहरण के यूज़-केस में करेंगे जो इस ट्यूटोरियल के दौरान डेवेलोप होने जा रहे हैं।
वास्तव में, यह एक बहुत ही सरल यूज़-केस होगा जो हमारे एप्लीकेशन के यूज़र्स को प्रत्येक यूजर को मैसेज भेजने की अनुमति देता है। जब यूजर अपने इनबॉक्स में एक नया मैसेज प्राप्त करते हैं, तो हम उन्हें इस ईमेल के बारे में एक ईमेल भेजकर सूचित करेंगे। बेशक, हम Laravel की नोटिफिकेशन फीचर का उपयोग कर ऐसा करेंगे!
एक कस्टम नोटिफिकेशन क्लास बनाएँ
जैसा कि हमने पहले चर्चा की थी, हम एक ऐसा ऐप्लिकेशन सेटअप करने जा रहे हैं जो हमारे एप्लीकेशन के यूज़र्स को एक दूसरे को मैसेज भेजने की अनुमति देता है। दूसरी ओर, जब हम ईमेल के माध्यम से अन्य यूज़र्स से एक नया मैसेज प्राप्त करते हैं तो हम यूज़र्स को सूचित करेंगे।
इस सेक्शन में, हम आवश्यक फाइलें तैयार करेंगे जो यूज़-केस को लागू करने के लिए आवश्यक हैं जिन्हें हम ढूंढ रहे हैं।
आरंभ करने के लिए, चलिए Message
मॉडल बनाएं जो यूज़र्स द्वारा भेजे गए मैसेज को एक-दूसरे को भेजे।
$php artisan make:model Message --migration
हमें messages
टेबल में कुछ फ़ील्ड्स को जोड़ने की आवश्यकता है जैसे to
, from
और message
। तो migrate
कमांड चलाने से पहले माइग्रेशन फ़ाइल को बदल दें।
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateMessagesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('messages', function (Blueprint $table) { $table->increments('id'); $table->integer('from', FALSE, TRUE); $table->integer('to', FALSE, TRUE); $table->text('message'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('messages'); } }
अब, माइग्रेट कमांड चलाएं जो डेटाबेस में messages टेबल बनाता है।
$php artisan migrate
इसे डेटाबेस में messages
टेबल बनाना चाहिए।
साथ ही, सुनिश्चित करें कि आपने डिफ़ॉल्ट Laravel ऑथेंटिकेशन सिस्टम को पहले स्थान पर इनेबल किया है ताकि रजिस्ट्रेशन और लॉगिन बॉक्स जैसे फीचर्स शामिल हों। यदि आप सुनिश्चित नहीं हैं कि यह कैसे करें, Laravel डॉक्यूमेंटेशन उसमें क्विक इनसाइट प्रदान करता है।
चूंकि Laravel में प्रत्येक नोटिफिकेशन को एक अलग क्लास द्वारा दर्शाया जाता है, इसलिए हमें एक कस्टम नोटिफिकेशन क्लास बनाने की आवश्यकता होती है जिसका उपयोग यूज़र्स को सूचित करने के लिए किया जाएगा। आइए कस्टम कंटेंट क्लास-NewMessage बनाने के लिए निम्न आर्टिसन कमांड का उपयोग करें।
$php artisan make:notification NewMessage
इसे app/Notifications/NewMessage.php
क्लास बनाना चाहिए, इसलिए चलिए उस फाइल के कंटेंट्स को निम्न कंटेंट्स से बदल दें।
<?php // app/Notifications/NewMessage.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 NewMessage extends Notification { use Queueable; public $fromUser; /** * Create a new notification instance. * * @return void */ public function __construct(User $user) { $this->fromUser = $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) { $subject = sprintf('%s: You\'ve got a new message from %s!', config('app.name'), $this->fromUser->name); $greeting = sprintf('Hello %s!', $notifiable->name); return (new MailMessage) ->subject($subject) ->greeting($greeting) ->salutation('Yours Faithfully') ->line('The introduction to the notification.') ->action('Notification Action', url('/')) ->line('Thank you for using our application!'); } /** * Get the array representation of the notification. * * @param mixed $notifiable * @return array */ public function toArray($notifiable) { return [ // ]; } }
चूंकि हम यूज़र्स को नोटिफिकेशन्स भेजने के लिए mail चैनल का उपयोग करने जा रहे हैं, इसके अनुसार via
मेथड को कॉन्फ़िगर किया गया है। तो यह वह तरीका है जो आपको नोटिफिकेशन के चैनल टाइप को कॉन्फ़िगर करने की अनुमति देता है।
इसके बाद, toMail
मेथड है जो आपको विभिन्न ईमेल पैरामीटर कॉन्फ़िगर करने की अनुमति देती है। वास्तव में, toMail
मेथड को \Illuminate\Notification\Messages\MailMessage
का इंस्टैंस रीटर्न करना चाहिए, और वह Laravel उपयोगी मेथड्स प्रदान करता है जो आपको ईमेल पैरामीटर कॉन्फ़िगर करने की अनुमति देता है।
विभिन्न मेथड्स में, line
मेथड आपको किसी मैसेज में सिंगल लाइन जोड़ने की अनुमति देती है। दूसरी तरफ, action
मेथड है जो आपको किसी मैसेज में कॉल-टू-एक्शन बटन जोड़ने की अनुमति देती है।
इस तरह, आप एक मैसेज फॉर्मेट कर सकते हैं जो यूज़र्स को भेजा जाएगा। इसलिए जब आप नोटिफिकेशन भेजने के लिए mail चैनल का उपयोग कर रहे हों तो आपको नोटिफिकेशन क्लास को कॉन्फ़िगर करना होगा।
अंत में, आपको यह सुनिश्चित करने की आवश्यकता है कि आप via
मेथड से कॉन्फ़िगर किए गए चैनल टाइप के अनुसार आवश्यक मेथड्स को लागू करें। उदाहरण के लिए, यदि आप डेटाबेस चैनल का उपयोग कर रहे हैं जो डेटाबेस में नोटिफिकेशन्स स्टोर करता है, तो आपको toMail
मेथड को कॉन्फ़िगर करने की आवश्यकता नहीं है; इसके बजाय, आपको toArray
मेथड को इम्प्लीमेंट करना चाहिए, जो डेटा को फॉर्मेट करता है जिसे डेटाबेस में स्टोर करने की आवश्यकता होती है।
नोटिफिकेशन्स कैसे भेजें
पिछले सेक्शन में, हमने एक नोटिफिकेशन क्लास बनाई है जो नोटिफिकेशन्स भेजने के लिए तैयार है। इस सेक्शन में, हम ऐसी फाइलें तैयार करेंगे जो दर्शाती हैं कि आप वास्तव में NewMessage
नोटिफिकेशन Laravel का उपयोग करके नोटिफिकेशन्स कैसे भेज सकते हैं।
आइए निम्नलिखित कंटेंट के साथ app/Http/Controller/NotificationController.php
पर एक कंट्रोलर फ़ाइल बनाएं।
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Message; use App\User; use App\Notifications\NewMessage; use Illuminate\Support\Facades\Notification; class NotificationController extends Controller { public function __construct() { $this->middleware('auth'); } public function index() { // user 2 sends a message to user 1 $message = new Message; $message->setAttribute('from', 2); $message->setAttribute('to', 1); $message->setAttribute('message', 'Demo message from user 2 to user 1.'); $message->save(); $fromUser = User::find(2); $toUser = User::find(1); // send notification using the "user" model, when the user receives new message $toUser->notify(new NewMessage($fromUser)); // send notification using the "Notification" facade Notification::send($toUser, new NewMessage($fromUser)); } }
बेशक, आपको routes/web.php
फ़ाइल में एक संबंधित रूट जोड़ने की आवश्यकता है।
Route::get('notify/index', 'NotificationController@index');
Laravel आपको नोटिफिकेशन्स भेजने की अनुमति देता है: या तो नोटिफिएब्ल एंटिटी या नोटिफिकेशन फसाड का उपयोग करके।
यदि एंटिटी मॉडल Laravel Illuminate\Notifications\Notifiable
ट्रेट का उपयोग करता है, तो आप उस मॉडल पर notify
मेथड को कॉल कर सकते हैं। App\User
क्लास Notifiable
ट्रेट इम्प्लीमेंट करता है और इस प्रकार यह नोटिफिएब्ल एंटिटी बन जाता है। दूसरी ओर, आप यूज़र्स को नोटिफिकेशन भेजने के लिए Illuminate\Support\Facades\Notification
फसाड का भी उपयोग कर सकते हैं।
चलो कंट्रोलर के index
मेथड के माध्यम से चलो।
हमारे मामले में, जब हम एक नया मैसेज प्राप्त करेंगे तो हम यूज़र्स को सूचित करने जा रहे हैं। इसलिए हमने पहली बार index
मेथड में उस व्यवहार की नकल करने की कोशिश की है।
इसके बाद, हमने रेसिपिएंट यूजर को $toUser
ऑब्जेक्ट पर notify
मेथड का उपयोग करके एक नए मैसेज के बारे में नोटिफाई किया है, क्योंकि यह notifiable एंटिटी है।
$toUser->notify(new NewMessage($fromUser));
आपने ध्यान दिया होगा कि हम __construct
मेथड के पहले आर्गुमेंट में $fromUser
ऑब्जेक्ट से भी पास करते हैं, क्योंकि हम मैसेज में from यूजरनेम शामिल करना चाहते हैं।
दूसरी ओर, यदि आप Notification
फसाड का उपयोग करके इसे नकल करना चाहते हैं, तो निम्न स्निपेट का उपयोग करके ऐसा करना बहुत आसान है।
Notification::send($toUser, new NewMessage($fromUser));
जैसा कि आप देख सकते हैं, हमने यूजर को नोटिफिकेशन भेजने के लिए Notification फसाड के send
मेथड का उपयोग किया है।
आगे बढ़ें और URL http://your-laravel-site-domain/notify/index को अपने ब्राउज़र में खोलें। अगर आप अभी तक लॉग इन नहीं हैं, तो आपको लॉगिन स्क्रीन पर रीडायरेक्ट कर दिया जाएगा। एक बार लॉग इन करने के बाद, आपको उस यूजर एड्रेस पर एक नोटिफिकेशन ईमेल प्राप्त होना चाहिए जो यूजर 1
से जुड़ा हुआ है।
आप सोच रहे होंगे कि नोटिफिकेशन सिस्टम to
एड्रेस को कैसे पहचानती है जब हमने इसे अभी तक कॉन्फ़िगर नहीं किया है। उस स्थिति में, नोटिफिकेशन सिस्टम नोटिफ़ेबल ऑब्जेक्ट में email
प्रॉपर्टी ढूंढने का प्रयास करती है। और App\User
ऑब्जेक्ट क्लास में पहले से ही वह प्रॉपर्टी है क्योंकि हम डिफ़ॉल्ट Laravel ऑथेंटिकेशन सिस्टम का उपयोग कर रहे हैं।
हालांकि, अगर आप इस व्यवहार को ओवरराइड करना चाहते हैं और आप ईमेल के अलावा किसी अन्य प्रॉपर्टी का उपयोग करना चाहते हैं, तो आपको बस अपने नोटिफिकेशन क्लास में निम्न मेथड को परिभाषित करने की आवश्यकता है।
public function routeNotificationForMail() { return $this->email_address; }
अब, नोटिफिकेशन सिस्टम को to
एड्रेस को फेच करने के लिए email_address
प्रॉपर्टी को ढूँढना चाहिए ना कि email
प्रॉपर्टी को।
और Laravel में नोटिफिकेशन सिस्टम का उपयोग कैसे करें। यह हमें इस आर्टिकल के अंत में भी लाता है!
निष्कर्ष
आज हम जो भी कर चुके हैं वह Laravel में बहुत उपयोगी में से एक, पर फिर भी बहुत काम चर्चा किया गया फीचर है। यह आपको विभिन्न चैनलों पर यूज़र्स को नोटिफिकेशन्स भेजने की अनुमति देता है।
एक क्विक परिचय के बाद, हमने एक वास्तविक दुनिया का उदाहरण इम्प्लीमेंट किया जो दर्शाता है कि mail चैनल पर नोटिफिकेशन्स कैसे भेजी जाएंगी। वास्तव में, यह आपके एप्लीकेशन में स्टेट चेंज के बारे में शार्ट मैसेज भेजने के मामले में वास्तव में आसान है।
आप में से उन लोगों के लिए जो या तो Laravel के साथ शुरू कर रहे हैं या अपने ज्ञान, साइट या एप्लीकेशन को एक्सटेंशन के साथ एक्सपैंड करना चाहते हैं, हमारे पास Envato Market में कई प्रकार की चीजें हैं जिनका आप अध्ययन कर सकते हैं।
क्या आपके पास कोई प्रश्न या सुझाव है, नीचे दिए गए फ़ीड का उपयोग करके उन्हें पोस्ट करने में संकोच न करें!