İçeriğe geç

Laravel Events & Listeners Nedir ve Kullanımı

Laravel Events & Listeners bir durum sonucu, belirlediğiniz işlemi yapmanızı sağlar. Örnek olarak yeni üye olan kullanıcıya, kullanıcı bilgilerini mail gönderme durumu verilebilir. Bu işlem için öncelikle Event ve Listener oluşturmanız gerekiyor.

php artisan make:event YeniUyeEvent

php artisan make:listener YeniUyeMailListener --event=YeniUyeEvent

Alternatif olarak manuel olarak da Event ve Listener oluşturabilirsiniz. Bunun için EventServiceProvider.php dosyasını aşağıdaki gibi düzenlemelisiniz.

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
     protected $listen = [
        'App\Events\YeniUyeEvent' => [
            'App\Listeners\YeniUyeMailListener',
        ],
    ];
 */

Daha sonra aşağıdaki komutla dosyaları oluşur.

php artisan event:generate

Oluşturduğunuz Event dosyasını düzenleyerek parametreleri kullanabilirsiniz.

class YeniUyeEvent
{
    public $user;

    public function __construct($book) //bunu buraya ekleyerek mailde parametreleri kullanabiliriz. Ör: Kullanıcı bilgileri
    {
        $this->user = $user;   
    }
...
}

Son olarak, Listener dosyasında ise yapılacak işlem handle metodunda tanımlanır.

use Mail;
use App\Mail\MyTestMail; // Deneme mail sınıfı

class YeniUyeMailListener
{
    public function handle(YeniUyeEvent $event)
    {
        $to_email = 'info@example.com';
        $details = [
        'title' => 'Account created',
        'body' => 'Name:'.$event->user->user_name.' Mail:'.$event->user->mail,
    ];
        Mail::to($to_email)->send(new MyTestMail($details));
    }
}

Son olarak; işlemi Queue olarak da gerçekleştirebilirsiniz. Bunun için ShouldQueue sınıfı kullanılır. Örneğimizde 100 siparişi olan üyeye hediye kupon gönderilecektir.

...
use Illuminate\Contracts\Queue\ShouldQueue;

class SendGiftCoupon implements ShouldQueue

// ...

public function shouldQueue($event)
{
    return
        $event->customer->purchases > 100 &&
        ! $event->customer->wasGifted();
}
Kategori:LaravelLaravel Advanced

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.