2015-11-19 5 views
4

Я использую Laravel Model Events. Мое требование - передать дополнительные параметры событию.Laravel 5.1 Eloquent 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)); 
    }); 
} 

Но это только отправить объект модели в то время как я пытаюсь отправки:

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

Как я отправить это на мероприятие?

+0

dd ($ item) посмотреть, что вы туда попали? –

+0

Являются ли атрибуты модели '' сообщениями', 'from' и' name'? – svrnm

+0

@BasheerAhmed dd ($ items) возвращает объект модели, а не данные, которые я передаю в '$ feedback-> save ($ data);' –

ответ

2

Определенные способы решения этой проблемы. Первое, что приходит на ум, - это получить данные 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 вместо этого, и не заморачиваться с аутентификацией, я просто не в состоянии знать, отношения с чего вы» вывешен до сих пор.

Возможно, вам потребуется небольшая корректировка для работы в вашем приложении, сообщите мне, если что-нибудь еще появится!