我正在使用Laravel Model Events.我的要求是将其他参数传递给事件.
我这样想:
$feedback = new Feedback();
$feedback->user_id = $this->user_id;
$feedback->feedback = $request->feedback;
$data = array(
'message' => $request->feedback,
'from' => $this->data->user->email,
'name' => $this->data->user->displayname
);
$feedback->save($data);
我的活动是:
public function boot()
{
Feedback::saved(function ($item) {
//\Event::fire(new SendEmail($item));
});
}
但它只在我尝试发送时发送Model对象:
$data = array(
'message' => $request->feedback,
'from' => $this->data->user->email,
'name' => $this->data->user->displayname
);
我如何将此发送给活动?
最佳答案 肯定有解决这个问题的方法.首先想到的是在您的活动所在的提供商内部获取Auth数据.
你需要做这样的事情:
use Auth; //Assuming this is how you are handling authentication
public function boot()
{
Feedback::saved(function ($item) {
$user = Auth::user();
$data = [
'message' => $item->feedback,
'from' => $user->email,
'name' => $user->displayname
];
\Event::fire(new SendEmail($data));
});
}
您可以改为使用$item-> user->电子邮件,而不用担心使用Auth,我只是无法了解您到目前为止发布的内容之间的关系.
代码可能需要稍微调整才能在您的应用程序中工作,让我知道是否还有其他问题!