簡體   English   中英

Laravel 5.1 Eloquent Events

[英]Laravel 5.1 Eloquent Events

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

我如何將此發送給活動?

肯定有解決這個問題的方法。 首先想到的是在您的活動所在的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,我只是無法知道您到目前為止發布的內容之間的關系。

代碼可能需要稍微調整才能在您的應用程序中工作,讓我知道是否還有其他問題!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM