3

我正在尝试在 Laravel 5.1 中实现事件。触发时的事件将发送邮件。

我做了以下步骤:

首先,在 EventServiceProvider 中,我添加了这个$listen

'send.mail' => [
            \App\Listeners\CreateTicketMail::class,
        ],

其次,创建了一个新的 Event 类 - SendActionEmails.

然后是 Listener 类中此事件的处理程序 - CreateTicketMail

public function handle(SendActionEmails $event)
{
    dd($event);
}

现在,当我触发此事件时send.mail,出现错误

Event::fire('check.fire');

Argument 1 passed to App\Listeners\CreateTicketMail::handle() must be an instance of App\Events\SendActionEmails, none given

另外,我在哪里可以将数据发送到邮件将使用的事件。数据喜欢到,从,主题。

我发现在触发事件时,一种方法是作为参数传递给火。

Event::fire('check.fire', array($data));

但是,我如何在监听器中处理这些数据????

4

1 回答 1

2

您需要将事件对象传递给触发方法并侦听名为事件类的事件:

在 EventServiceProvider 中:

SendActionEmails::class => [
    \App\Listeners\CreateTicketMail::class,
],

活动类别:

class SendActionEmails {
  public $data;
}

触发事件并传递一些数据:

$event = new SendActionEmails;
$event->data = 'some data';
Event::fire($event);
于 2015-07-08T16:53:54.777 回答