So stellen Sie Laravel 5/6 Benachrichtigungs -E -Mail -Vorlagen an

So stellen Sie Laravel 5/6 Benachrichtigungs -E -Mail -Vorlagen an

Okay, also bin ich auf dieses Problem gestoßen, als ich eine E -Mail -Vorlage für meinen Laravel 5 eingerichtet habe.4 App. Es war eine "willkommene" E -Mail, die die Standard -Laravel -Vorlage verwendete. Die Herausforderung bestand darin, die Header und die Fußzeile der Vorlage zu ändern.

Wir alle versuchen, die Dokumentation so schnell wie möglich durchzulesen, und wenn dies nicht funktioniert, wechseln wir nach 3 Minuten nach dem Lesen der Dokumentation auf Stackoverflow, Laracasts oder ein anderes Forum, wobei wir "Kopieren und Einfügen" -Ready -Code erwarten, um zu kopieren und einzufügen ".

Weitermachen…

Die Dinge sind einfach, wenn Sie nur die Textnachricht ändern möchten, und Sie haben viele Beispiele dafür, wie dies mit den Mail -Komponenten verwendet wird. Allerdings fand ich keine Antworten, wie ich die Standardheader und die Fußzeile ändern kann.

Komponenten

Laravel 5.4 Einführte mailable Komponenten eingeführt. Hier können Sie darüber lesen.



$ Slot

Dies wäre eine Warnkomponente, bei der es sich im Grunde genommen um eine Blattvorlage handelt. Dann wäre der $ slot eine Variable/Ort, um Ihren Inhalt aus einer anderen Vorlage/Komponente abzugeben.

@component ('alert')
Hoppla! Etwas ist schief gelaufen!
@endcomponent

So wie das. Dies würde rendern


Hoppla! Etwas ist schief gelaufen!

Veröffentlichungsveröffentlichung veröffentlichen

Anfänglich wird Laravel ihre Komponenten verwenden,

PHP Artisan Anbieter: Veröffentlichen-Tag = Laravel-Mail

Es werden eine E -Mail- und Markdown -Ordner in Ihrem Ordner "Ressourcen/Ansicht/Anbieter" erstellt. Im Inneren finden Sie Komponenten wie Layout oder Header usw.

Benachrichtigung erstellen

Was Sie tun möchten, erstellen entweder eine Benachrichtigung, ein Ereignis oder eine Postklasse, um eine E -Mail abzunehmen, wenn etwas passiert.

Ich entschied mich für eine Benachrichtigung. Wenn Sie eine Benachrichtigung erstellen (Sie können mehr darüber erfahren, wie Sie eine Benachrichtigung über Handwerker erstellen können), erhalten Sie eine solche Klasse wie folgt:

Namespace App \ Benachrichtigungen;
Verwenden Sie Illuminate \ Bus \ Queueable;
Verwenden Sie Illuminate \ Benachrichtigungen \ Benachrichtigung;
Verwenden Sie Illuminate \ Contracts \ Queue \ SollteQueue;
Verwenden Sie Illuminate \ Benachrichtigungen \ message \ MailMessage;
Benutzerregister erweitert die Benachrichtigung

Verwenden Sie an der Warteschlange;
/**
* Variable der Klassen ohne Papiere
*
* @var String
**//
public $ user;
/**
* Erstellen Sie eine neue Benachrichtigungsinstanz.
*
* @return void
*/
öffentliche Funktion __construct ($ user)

$ this-> user = $ user;

/**
* Holen Sie sich die Lieferkanäle der Benachrichtigung.
*
* @param gemischt $ notifikable
* @return Array
*/
Öffentliche Funktion über ($ notifikable)

return ['mail'];

/**
* Holen Sie sich die Mail -Darstellung der Benachrichtigung.
*
* @param gemischt $ notifikable
* @return \ Illuminate \ Benachrichtigungen \ message \ mailMessage
*/
öffentliche Funktion Tomail ($ notifikabel)

Rückgabe (neuer MailMessage)
-> von ('[email protected] ',' admin ')
-> Betreff ('Willkommen im Portal')
-> Markdown ('Mail.Willkommen.index ', [' user '=> $ this-> user]);

/**
* Holen Sie sich die Array -Darstellung der Benachrichtigung.
*
* @param gemischt $ notifikable
* @return Array
*/
Öffentliche Funktion TOARRAY ($ notifikabel)

zurückkehren [
//
];

Achten Sie hier auf die Tomail -Methode sowie den Konstruktor der Klasse, da wir ein Objekt an sie weitergeben werden. Beachten Sie auch, dass wir verwenden

-> Markdown ('einige.Klinge.PHP ');

Der nächste Schritt besteht darin, diese Benachrichtigung zur Arbeit zu übertragen. Irgendwo in Ihrem RegisterController möchten Sie dies vielleicht nennen (ohne wie Sie es ausführen, entweder synchronisieren oder in der Warteschlange…). Vergessen Sie nicht, den Namespace der Benachrichtigung oben aufzunehmen.

$ user = user :: create ([
'name' => $ data ['name'],
'E -Mail' => $ data ['E -Mail'],
'Nachname' => $ data ['LastName'],
'Passwort' => bcrypt ($ data ['Passwort']),
]);
$ user-> benachrichtigen (neuer userregister ($ user));

Warum gehe ich so tief? Nun, weil ich Ihnen auch zeigen möchte, wie Sie Ihre Daten in die E -Mail -Vorlage übergeben können.

Als nächstes kannst du gehen Ressourcen/Ansichten/Mail/Welcome/Index.Klinge.Php (Es kann jeder Ordner und den Dateinamen sein, den Sie möchten) und dies einfügen:

@Component ('Mail :: Layout')
-- Header --
@Slot ('Header')
@Component ('Mail :: Header', ['url' => config ('App.URL ')])
Header -Titel
@endcomponent
@endslot
-- Körper --
Dies ist unsere Hauptnachricht $ user
-Subkopie-
@ISSET ($ subcopy)
@Slot ('Subkopie')
@Component ('Mail :: subcopy')
$ subcopy
@endcomponent
@endslot
@endisset
-- Fusszeile --
@Slot ('Fußzeile')
@Component ('Mail :: footer')
© Date ('y') config ('App.Name') . Super Fußzeile!
@endcomponent
@endslot
@endcomponent

Sie können jetzt einfach jedes Bild zu Ihrem Header hinzufügen oder den Link im Fußzeilen usw. ändern.

Hoffe das hilft.

Folge mir auf Twitter
Füge mich auf LinkedIn hinzu