首页 > 解决方案 > Laravel/Voyager:使用 BREAD 创建新数据时发送电子邮件

问题描述

我有一张带有 Voyager 的优惠券表 BREAD,其中每张优惠券都有一个电子邮件地址。创建新优惠券后,我想向与优惠券关联的特定电子邮件地址发送电子邮件。

优惠券表:

在此处输入图像描述

例如上图,在我创建了名为:haha123 的优惠券后,我想发送电子邮件至 cdn@gmail.com。

由于我没有制作用于生成新优惠券的自定义控制器,并且只使用 Voyager 的默认 BREAD 功能,因此我不确定我应该在哪里以及如何做。

解决了:

这很可能不是最好的方式,因为我没有使用航海者事件。因此,我只是通过添加我自己的自定义 voyager CouponsController 来覆盖默认控制器并在自定义 CouponsController 的 store 方法中添加 laravel 邮件功能来做这件事。

标签: phplaravelemaileventsvoyager

解决方案


可能有帮助,当模型状态更新时发送电子邮件(Laravel Voyager 管理员)

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Mail;

class Contact extends Model
{
    public $table = 'contacts';
    public $fillable = ['name', 'email', 'message'];

    protected static function boot()
    {
        parent::boot();
        static::updating(function ($contact) {
            if ($contact->status == 1) {
                Mail::send(
                    'email',
                    array(
                        'name' => $contact->name,
                        'email' => $contact->email,
                        'bodyMessage' => $contact->message
                    ),
                    function ($message) use ($contact) {
                        $message->from($contact->email);
                        $message->to('email_address@email.com', 'Name')->subject('Your request status updated');
                    }
                );
            }
        });
    }
}

推荐阅读