如何将数据从Laravel控制器发送到Mailable类

如何将数据从Laravel控制器发送到Mailable类

问题描述:

我在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

试试这个:

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

高兴地帮助:) –