Übergabe von Daten an einen Abschluss in Laravel 4

108

Ich versuche, die Mail-Klasse in Laravel 4 zu verwenden, und kann keine Variablen an das $ m-Objekt übergeben.

Das $ team-Objekt enthält Daten, die ich mit beredten Daten aus der Datenbank abgerufen habe.

Mail::send('emails.report', $data, function($m)
{
   $m->to($team->senior->email, $team->senior->first_name . ' '. $team->senior->last_name );
   $m->cc($team->junior->email, $team->junior->first_name . ' '. $team->junior->last_name );
   $m->subject('Monthly Report');
   $m->from('[email protected]', 'Sender');
});

Aus irgendeinem Grund wird eine Fehlermeldung angezeigt, bei der das $ team-Objekt nicht verfügbar ist. Ich nehme an, es hat etwas mit dem Umfang zu tun.

Irgendwelche Ideen ?

Benjamin Gonzalez
quelle
Genau das gleiche Szenario für mich. Das Mail :: send-Problem führte dazu, dass ich nach der Übergabe von Variablen an Closures und dann zurück zu diesem suchte. Vielleicht muss ein Zeichen, dass etwas zu den Laravel-Mailer-Dokumenten hinzugefügt werden muss?
ShaunUK

Antworten:

231

Wenn Sie die $teamVariable außerhalb der Funktion instanziiert haben , befindet sie sich nicht im Funktionsumfang. Verwenden Sie das Schlüsselwort use .

$team = Team::find($id);
Mail::send('emails.report', $data, function($m) use ($team)
{
   $m->to($team->senior->email, $team->senior->first_name . ' '. $team->senior->last_name );
   $m->cc($team->junior->email, $team->junior->first_name . ' '. $team->junior->last_name );
   $m->subject('Monthly Report');
   $m->from('[email protected]', 'Sender');
});

Hinweis: Die verwendete Funktion ist eine PHP-Schließung (anonyme Funktion). Sie ist nicht exklusiv für Laravel.

Segen
quelle
3
Vielen Dank, ich wusste nicht, dass Sie so etwas verwenden können. Ich wünschte nur, ich hätte das früher lernen können.
Douglas.Sesar
2
Arbeitete auch, um mein Problem mit Maill :: Warteschlange in Laravel 5
DavidHyogo
@ DavidHyogo Ich auch, froh, diesen Beitrag zu finden
atom2ueki