Laravel / Voyager:使用BREAD创建新数据时发送电子邮件

时间:2018-06-26 15:39:17

标签: php laravel email events voyager

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

优惠券表:

enter image description here

例如,从上面的图片中,我创建了名为haha123的优惠券后,我想向cdn@gmail.com发送电子邮件。

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

已解决:

这很可能不是最好的方法,因为我没有利用旅行者事件。因此,通过添加我自己的自定义voyager CouponsController来覆盖默认控制器,并在自定义CouponsController的store方法中添加laravel邮件功能,我就以麻烦的方式完成了工作。

3 个答案:

答案 0 :(得分:0)

旅行者只不过使您的工作变得简单。它在laravel中为您创建模型和控制器。您将在使用artisan创建的自定义模型或控制器的同一位置找到控制器和模型。希望对您有所帮助。

如果您还有其他问题,请具体说明您所面临的问题。

欢呼

答案 1 :(得分:0)

您可以使用事件侦听器轻松地进入Coupon模型的生命周期:

https://laravel.com/docs/5.6/eloquent#events

首先告诉模型在创建新模型时触发CouponCreated事件

use App\Events\CouponCreated;

class Coupon extends Model
{
    /**
     * The event map for the model.
     *
     * @var array
     */
    protected $dispatchesEvents = [
        'created' => CouponCreated::class
    ];
}

该事件将通过Coupon模型传递,您可以使用该模型发送电子邮件。

如果您需要更具体的帮助,则需要发布代码。我敢肯定,如果您追赶下去,也可以在CouponController的create方法中做到这一点。

答案 2 :(得分:0)

可能有用,当模型状态更新时发送电子邮件(Laravel Voyager Admin)

<?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');
                    }
                );
            }
        });
    }
}