2016-11-17 2 views
3

Ich habe eine Mailable-Klasse in Laravel 5.3 erstellt, die die Ansicht aufruft. Ich muss jedoch einige Variablen von meinem Controller an die Mailable-Klasse übergeben und diese Werte dann in der Ansicht verwenden. Das ist mein Set-up:So senden Sie Daten vom Laravel-Controller an die Mailable-Klasse

Controller:

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

verschickbare:

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, 
         ]); 
    } 
} 

Die oben gibt mir den Fehler:

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

auf die Bezug construct Zeile in Klasse:

$this->$mailData = $mailData; 

Was habe ich hier falsch gemacht? Wie übertrage ich Array-Werte korrekt von Controller zu Mailable und verwende dann with, um sie an die View weiterzugeben?

Antwort

3

Try this:

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

der Fehler 'Array String conversion' für diese Linie immer:' $ this-> maildata = $ Maildata; ' – Neel

+2

Hallo Rimon, habe ich es Arbeiten. Ich hatte einen Tippfehler in meinem Code. Statt "$ this-> mailData = $ mailData;" hatte ich es als '$ this -> $ mailData = $ mailData;'. Zweitens war "geschützt" statt "öffentlich" kein Problem. Allerdings muss ich die Verweise auf $ this-> mailData ['xyz'] 'anstelle von' $ mailData ['xyz'] 'aktualisieren. Danke für Ihre Hilfe. Sehr geschätzt .. – Neel

+0

Glücklich zu helfen :) –

Verwandte Themen