Comment personnaliser les modèles de messagerie Laravel 5/6 Notification

Comment personnaliser les modèles de messagerie Laravel 5/6 Notification

Très bien, j'ai donc rencontré ce problème de configuration d'un modèle de messagerie pour mon Laravel 5.4 application. C'était un e-mail «bienvenue», en utilisant le modèle Laravel par défaut. Le défi était de changer l'en-tête et le pied de page du modèle.

Nous essayons tous de lire la documentation le plus rapidement possible et si cela ne fonctionne pas, après 3 minutes complètes de la lecture de la documentation, nous passons à StackOverflow, ou à Laracasts ou à tout autre forum, en attendant de copier et coller du code prêt.

Continuer…

Les choses sont faciles si vous voulez simplement modifier le SMS, et que vous avez de nombreux exemples sur la façon de le faire, en utilisant les composants du courrier. Cependant, je n'ai trouvé aucune réponse sur la façon de modifier l'en-tête et le pied de page par défaut.

Composants

Laravel 5.4 Composants envoyables introduits. Vous pouvez lire à ce sujet ici.



$ slot

Ce serait un composant alerte, qui est essentiellement un modèle de lame. Alors le $ slot serait une variable / lieu pour supprimer votre contenu d'un autre modèle / composant.

@Component ('Alert')
Coqueluche! Quelque chose s'est mal passé!
@endComponent

Comme ça. Cela rendrait


Coqueluche! Quelque chose s'est mal passé!

Publier le vendeur Publier

Initialement, Laravel utilisera leurs composants cachés au cœur du cadre, que vous pouvez exporter en faisant

PHP Artisan Vendor: Publish --Tag = Laravel-Mail

Il créera un dossier de courrier et de marque dans votre dossier Ressources / View / Vendor. À l'intérieur, vous trouverez des composants comme la mise en page ou l'en-tête, etc.

Création de notification

Ce que vous voulez faire, c'est de créer une notification, un événement ou une classe de courrier afin de tirer un e-mail lorsque quelque chose se produit.

J'ai décidé d'aller avec une notification. Lors de la création d'une notification (vous pouvez en savoir plus sur la façon de créer une notification via Artisan), vous obtiendrez une classe comme ceci:

Namespace App \ Notifications;
Utiliser illuminate \ bus \ que la queue;
Utiliser illuminate \ notifications \ notification;
Utiliser illuminate \ contracts \ file d'attente \ Soupreue;
Utilisez Illuminate \ Notifications \ Messages \ MailMessage;
La classe Considérée de l'utilisateur étend la notification

Utilisez la queregue;
/ **
* Variable de classe sans papiers
*
* String @var
** /
public $ utilisateur;
/ **
* Créez une nouvelle instance de notification.
*
* @return void
* /
fonction publique __construct ($ utilisateur)

$ this-> user = $ utilisateur;

/ **
* Obtenez les canaux de livraison de la notification.
*
* @param mixte $ notifiable
* @return Array
* /
fonction publique via ($ notifiable)

return ['mail'];

/ **
* Obtenez la représentation du courrier de la notification.
*
* @param mixte $ notifiable
* @return \ illuminate \ notifications \ messages \ MailMessage
* /
fonction publique Tomail ($ notifiable)

retour (new MailMessage)
-> de ('info @ parfois-it-wont-work.com ',' admin ')
-> Sujet («Bienvenue sur le portail»)
-> Markdown ('Mail.accueillir.index ', [' utilisateur '=> $ this-> user]);

/ **
* Obtenez la représentation du tableau de la notification.
*
* @param mixte $ notifiable
* @return Array
* /
Fonction publique TOARRAY ($ NOFIFIABLE)

retour [
//
]]

Ici, faites attention à la méthode Tomail ainsi qu'au constructeur de la classe car nous y passerons un objet. Notez également que nous utilisons

-> Markdown ('Certains.lame.php ');

L'étape suivante consiste à pousser cette notification pour travailler. Quelque part dans votre registre Controller, vous voudrez peut-être appeler cela (ne pas entrer dans la façon dont vous allez l'exécuter, soit synchronisé ou en file d'attente…). N'oubliez pas d'inclure l'espace de noms de la notification en haut.

$ user = user :: create ([[
'name' => $ data ['name'],
'e-mail' => $ data ['e-mail'],
'LastName' => $ data ['LastName'],
'mot de passe' => bcrypt ($ data ['mot de passe']),
]));
$ user-> notify (new userregister ($ user));

Pourquoi vais-je si profondément? Eh bien parce que je veux aussi vous montrer comment transmettre vos données dans le modèle de messagerie.

Ensuite, vous pouvez aller à Ressources / vues / courrier / bienvenue / index.lame.php (Il peut s'agir de n'importe quel dossier et nom de fichier que vous voulez) et de collier ceci:

@Component ('Mail :: Layout')
-- Entête --
@Slot ('Header')
@Component ('Mail :: Header', ['url' => config ('app.url ')])
Titre de tête
@endComponent
@endlot
-- Corps --
Ceci est notre message principal $ utilisateur
- Subcopy -
@isset ($ subcopy)
@slot («sub-copy»)
@Component ('Mail :: Subcopy')
$ subcopy
@endComponent
@endlot
@endisset
-- Bas de page --
@slot ('pied de page')
@Component ('Mail :: Footer')
© date ('y') config ('app.nom') . Super pieds!
@endComponent
@endlot
@endComponent

Vous pouvez maintenant ajouter facilement n'importe quelle image à votre en-tête ou modifier le lien à l'intérieur du pied de page, etc.

J'espère que cela t'aides.

Suis moi sur Twitter
Ajoutez-moi sur LinkedIn