I have created Mailable Class in Laravel 5.3 which calls the view. However, I need to pass some variables from my Controller to the Mailable Class and then use these values inside the View. This is my set-up:
Controller:
$mailData = array(
'userId' => $result['user_id'],
'action' => $result['user_action'],
'object' => $result['user_object'],
);
Mail::send(new Notification($mailData));
Mailable:
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,
]);
}
}
The above gives me the error:
ErrorException in Notification.php line 25:
Array to string conversion
Referring to the construct
line in Mailable Class:
$this->$mailData = $mailData;
What have I got wrong here? How do I correctly pass array values from Controller
to Mailable
and then use with
to pass them on to the View
?
Array to string conversion
for this line:$this->mailData = $mailData;
– Sardou