2016-11-17 127 views
3

我在Laravel 5.3中創建了Mailable類,它調用視圖。但是,我需要將一些變量從我的Controller傳遞給Mailable類,然後在View中使用這些值。這是我的設置:如何將數據從Laravel控制器發送到Mailable類

控制器:

$mailData = array(
        'userId'  => $result['user_id'], 
        'action'  => $result['user_action'], 
        'object'  => $result['user_object'], 
       ); 
Mail::send(new Notification($mailData)); 

可郵寄:

class Notification extends Mailable 
{ 
    use Queueable, SerializesModels; 

    protected $mailData; 

    /** 
    * Create a new message instance. 
    * 
    * @return void 
    */ 
    public function __construct($mailData) 
    { 
     $this->$mailData = $mailData; 
    } 

    /** 
    * Build the message. 
    * 
    * @return $this 
    */ 
    public function build() 
    { 
     // Array for Blade 
     $input = array(
          'action'  => $mailData['action'], 
          'object'  => $mailData['object'], 
        ); 

     return $this->view('emails.notification') 
        ->with([ 
         'inputs' => $this->input, 
         ]); 
    } 
} 

上面給我的錯誤:

ErrorException in Notification.php line 25: 
Array to string conversion 

參考construct line in Mailable Class:

$this->$mailData = $mailData; 

我在這裏弄錯了什麼?如何正確地將數組值從Controller傳遞到Mailable,然後使用with將它們傳遞給View

回答

3

試試這個:

public $mailData; 

public function __construct($mailData) 
{ 
    $this->mailData = $mailData; 
} 

public function build() 
{ 
    // Array for Blade 
    $input = array(
         'action'  => $this->mailData['action'], 
         'object'  => $this->mailData['object'], 
       ); 

    return $this->view('emails.notification') 
       ->with([ 
        'inputs' => $input, 
        ]); 
} 

Docs

+0

仍然得到錯誤'陣列字符串conversion'這一行:'$這個 - > MAILDATA = $ MAILDATA;' – Neel

+2

RIMON嗨,我得到了它加工。我的代碼中有一個錯字。而不是'$ this-> mailData = $ mailData;',我把它作爲'$ this - > $ mailData = $ mailData;'。其次,「保護」而不是「公共」不是問題。但是,我需要更新'$ this-> mailData ['xyz']'而不是'$ mailData ['xyz']'的引用。感謝您的幫助。非常感謝.. – Neel

+0

高興地幫助:) –

相關問題