آموزش notification ها در لاراول قسمت دوم

حمید تیموری 1328 بازدید 1398/09/16
آموزش notification ها در لاراول قسمت دوم

در مطلب قبلی بخشی از چگونگی استفاده از نوتیفیکیشن در لاراول را توضیح دادیم. یاد گرفتیم که چگونه یک ایمیل ساده را ارسال کنیم.
در این مطلب میخواهیم چگونگی استفاده از SMS در لاراول برای ارسال notification را توضیح دهیم !

<?php

namespace App\Notifications\Client;

use App\Channels\SmsChannel;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

class LoginNotification extends Notification implements ShouldQueue
{
    use Queueable;
    

    /**
     * Get the notification's delivery channels.
     *
     * @param mixed $notifiable
     * @return array
     */
    public
    function via($notifiable)
    {
       
       return [SmsChannel::class,'mail'];
       
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param mixed $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
       $subject = "This is subject to {$notifiable->email}";
     
       return (new MailMessage)
          ->subject($subject)
          ->view('mails.template');

    }


    public function toSms($notifiable)
    {
        $msg = "Factor paid at : ". now()->format('Y/m/d - H:i');
        return $msg;
    }

    /**
     * Get the array representation of the notification.
     *
     * @param mixed $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

به کلاس notification بالا دقت کنید. متد via را ببینید که راه های ارسال notification در آن تعریف شده است. یکی به صورت mail و دیگری به صورت Sms که در ادامه توضیح خواهم داد.


لاراول برای ارسال SMS از درایوری به اسم nexmo استفاده میکند که به دلیلی اینکه ما در ایران زندگی میکنیم به این راحتی نمیتوانیم با آن کار کنیم!
خب ما باید خودمان این مشکل را برطرف کنیم. برای ادامه، یه فولدر به نام Channels در فولدر app بسازید
و یک کلاس به نام SmsChannel درون این فولدر بسازید.

<?php

namespace App\Channels;

use Illuminate\Notifications\Notification;

class SmsChannel
{
    /**
     * Send the given notification.
     *
     * @param mixed $notifiable
     * @param \Illuminate\Notifications\Notification $notification
     * @return void
     */
    public function send($notifiable, Notification $notification)
    {
        # get data from notification class
        $message = $notification->toSms($notifiable);
        $mobile = $notifiable->mobile;
        
        // send sms here ...

    }
}

به کلاس بالا دقت کنید، ممکن است در نگاه اول کمی پیچیده به نظر برسد.

یک متد به نام send در این کلاس اضافه کردیم که دو ورودی به آن پاس داده شده است:

  • اولین پارامتر یک نمونه از کلاسی است که notification برای آن ساخته شده است برای مثال : user
  • پارامتر دوم نمونه ای کلاس notification ای که درون آن متنی آماده کردیم که توسط sms ارسال کنیم


از طریق پارامتر اول میتوان به فیلد موبایل کاربر دست یافت و از طریق پارامتر دوم متد toSms مقداری را که برای ارسال پیام آماده کردیم دریافت کرد.

حالا برای ارسال پیام هم موبایل و هم پیام مورد نظر را داریم، حالا میتوانید کد ارسال پیام خودتان را درون همین متد بنویسید.
به دلیل اینکه هر سرویس ایرانی ارسال پیام کد مخصوص به خود را دارد من توضیحی درباره سرویس خاصی نمینویسم . 
 برای درک بهتر سعی کردم مطالب رو خلاصه توضیح بدم و از توضیحات اضافه پرهیز کنم.
ولی اگر سوالی داشتید از قسمت نظرات بپرسید که بتونم کمکتون کنم.

امیدوارم این مطلب براتون مفید باشه.

دیگر مقالات
امید کیانی 709 بازدید 1398/07/17
حمید تیموری 1138 بازدید 1397/12/04
حمید تیموری 989 بازدید 1397/10/06
امید کیانی 545 بازدید 1398/06/17
حمید تیموری 483 بازدید 1398/04/16


نظرات (0)
هنوز نظری ثبت نشده است
برای ثبت نظر ابتدا وارد سایت شوید