【问题标题】:Laravel 5.1 Eloquent EventsLaravel 5.1 雄辩的事件
【发布时间】:2015-11-19 12:19:10
【问题描述】:

我正在使用 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));
    });
}

但它只在我尝试发送时发送模型对象:

$data = array(
        'message' => $request->feedback,
        'from' => $this->data->user->email,
        'name' => $this->data->user->displayname
    );

我如何将其发送到活动?

【问题讨论】:

  • dd($item) 看看你得到了什么?
  • messagefromname 会成为模型的属性吗?
  • @BasheerAhmed dd($items) 返回模型对象而不是我传入的数据 $feedback->save($data);
  • @svrnm 不,这些不是模型的属性。我想发送额外的参数,这些是额外的参数。
  • 不能使用save方法传递数据...

标签: php laravel-5


【解决方案1】:

肯定有解决这个问题的方法。首先想到的是在您的事件所在的Provider 中获取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->email,而不用打扰 Auth,我只是无法从您迄今为止发布的内容中了解关系。

代码可能需要稍作调整才能在您的应用程序中运行,如果出现其他问题,请告诉我!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2016-10-05
    • 2021-12-18
    相关资源
    最近更新 更多