Ü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('info@website.com', '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 ?


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('info@website.com', 'Sender');
});

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.