我正在使用 Laravel 模型事件。我的要求是将附加参数传递给事件。
我正在尝试这样:
$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
中获取 Provider
数据。
你需要做这样的事情:
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->email
,而不必为 Auth 烦恼,我只是无法从您迄今为止发布的内容中了解关系。代码可能需要稍作调整才能在您的应用程序中工作,如果出现其他问题,请告诉我!