آموزش notification ها در لاراول

حمید تیموری 1 62 بازدید 1398/07/09
آموزش notification ها در لاراول

علاوه بر ارسال ایمیل، لاراول این امکان را فراهم کرده است که از طریق راه های ارتباطی مختلف برای کاربر notification ارسال کنید. در این مقاله قصد داریم notification ها در لاراول را آموزش دهیم.
دقت کنید که این notication ها بهتر است پیام های کوتاهی باشند مثل این پیام : "فاکتور پرداخت شد". میبینید که این پیام را به راحتی میتوانید برای کاربر SMS کنید و یا از طریق راه های مختلف برای کاربر ارسال کنید.

ساخت Notification :
در پوشه app پوشه ای برای notification ها تعبیه شده است که ممکن است در نگاه اول آن را نداشته باشید. زمانی که دستور زیر را اجرا میکنید یک class به نامی که خودتان انتخاب کردید در یک فولدر برای شما ایجاد میشود.

php artisan make:notification InvoicePaid

این دستور یک class در مسیر زیر برای شما ایجاد میکند

app/Notifications

هر کلاس حاوی یک متد به اسم via است که روش های ارسال اعلان ها رو مشخص میکند.

برای استفاده از Notification ها در لاراول به دو روش میتوانید این کار را انجام دهید:
یکی استفاده از متد Notify در Trait Notifiable 
و دیگری از Notification Facade

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;
}

این Trait را باید در مدلی use کنید که میخواهید از notification ها در آن استفاده کنید. برای مثال یکی از معمول ترین مدل ها،
مدل User است.
اعلان های متعددی میتوان برای کاربران ارسال کرد از جمله تاییدیه ایمیل، پرداخت فاکتور و ...
به کد زیر دقت کنید:

use App\Notifications\InvoicePaid;

$user->notify(new InvoicePaid($invoice));

متد notify به دلیل اضافه کردن Notifiable Trait به مدل، به هر object از مدل شما اضافه میشود. این متد یک نمونه از یک کلاس notification را به عنوان ورودی دریافت میکند که بسته به نیاز شما، میتوانید به کلاس notification خود data بفرستید یا خیر.

اگر یکی از Notification هایی که ساخته اید را باز کنید، میبینید که یک متد به نام via وجود دارد. این متد به این منظور است که شما تعیین کنید که به چه صورت میخواهید برای کاربر خود notification ارسال کنید.

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

برای مثال، طبق کد بالا، notification هایی که برای کاربر ارسال میکنید هم از طریق ایمیل و هم از طریق دیتابیس برای کاربر ارسال میشود.

منظور از دیتابیس این است که این اعلان (Notification) ها برای هر کاربر در دیتابیس ذخیره میشوند و میتواند هربار که وارد سایت میشود آنها را ببیند.

در ادامه اگر بخواهید با استفاده از ایمیل برای کاربران خود اعلان ارسال کنید، متد toMail اجرا میشود.

<?php

namespace App\Http\Controllers;

use App\User;
use App\Notifications\FactorPaidNotification;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
      
    public function store(User $user)
    {
       $user->notify(new FactorPaidNotification());

       // code ...
        
    }

}

به متد زیر دقت کنید:

public function toMail($notifiable)
{
     $subject = "This is subject to {$notifiable->email}";
     
     return (new MailMessage)
          ->subject($subject)
          ->view('mails.template');
}

میبینید که برای متغیر "موضوع" یا همان subject یک متن آماده کردیم که از ایمیل کاربر هم در آن استفاده شده است. متغیر $notifiable به کاربری اشاره میکند که در مثال های بالاتر notify برای آن استفاده شده است. (طبق کد زیر)

$user->notify(new FactorPaidNotification());


نکته ی دیگری که در مثال قبل نوشته شده بود، این است که میتوانید یک view را به دلخواه استفاده کنید. در این مثال یک فایل به اسم template استفاده شده که یک view برای ایمیل شماست که میتوانید آن را طبق نیاز خودتان طراحی کنید.

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

اگر سوالی داشتید از قسمت نظرات بپرسید.

مقالات مرتبط
امید کیانی 19 بازدید 1398/07/12
حمید تیموری 294 بازدید 1398/03/17
امید کیانی 26 بازدید 1398/07/11
حمید تیموری 615 بازدید 1397/05/20
امید کیانی 27 بازدید 1398/07/10
نظرات (0)
هنوز نظری ثبت نشده است
برای ثبت نظر ابتدا وارد سایت شوید