Hvordan tilpasse Laravel 5 /6 varsling e -postmaler

Hvordan tilpasse Laravel 5 /6 varsling e -postmaler

OK, så jeg løp inn i dette problemet med å sette opp en e -postmal for Laravel 5.4 app. Det var en "velkommen" e -post, ved å bruke standard laravel mal. Utfordringen var å endre toppteksten og bunnteksten til malen.

Vi prøver alle å lese gjennom dokumentasjonen så raskt som mulig, og hvis det ikke fungerer, etter hele 3 minutters lesing av dokumentasjonen, ville vi bytte til StackOverflow, eller Laracasts eller et annet forum, og forventer 'Kopier og lim inn' Klar kode.

Fortsette…

Ting er enkelt hvis du bare vil endre tekstmeldingen, og du har mange eksempler på hvordan du gjør det, ved å bruke e -postkomponentene. Imidlertid fant jeg ingen svar på hvordan jeg endrer standardoverskrift og bunntekst.

Komponenter

Laravel 5.4 introduserte sendbare komponenter. Du kan lese om det her.



$ slot

Dette vil være en varslingskomponent, som i utgangspunktet er en bladmal. Da ville $ slot være en variabel/sted å slippe innholdet ditt fra en annen mal/komponent.

@Component ('Alert')
Whoops! Noe gikk galt!
@endComponent

Slik. Dette ville gjengi


Whoops! Noe gikk galt!

Publiser leverandør publiser

Opprinnelig vil Laravel bruke sine komponenter gjemt i kjernen av rammeverket, som du kan eksportere ved å gjøre

PHP Artisan-leverandør: Publiser-Tag = Laravel-Mail

Det vil opprette en mail- og markdown -mapper i ressursene/visningsmappen/leverandørmappen. Inni finner du komponent som layout eller header osv.

Opprette varsel

Det du vil gjøre, er enten å opprette en varsel, hendelse eller en e -postklasse for å avfyre ​​en e -post når noe skjer.

Jeg bestemte meg for å gå med et varsel. Når du oppretter noe varsel (du kan lese mer om hvordan du oppretter et varsel via Artisan), vil du få en klasse som denne:

Namespace App \ varsler;
Bruk Illuminate \ Bus \ Queueable;
Bruk belysning \ varsler \ varsling;
Bruk Illuminate \ Contracts \ Queue \ Shouldqueue;
Bruk belysning \ Varsler \ Meldinger \ MailMessage;
klasse Brukerregistrert utvider varsel

Bruk queueable;
/**
* Udokumentert klassevariabel
*
* @var streng
**/
offentlig $ bruker;
/**
* Opprett en ny varslingsinstans.
*
* @return void
*/
offentlig funksjon __construct ($ bruker)

$ this-> bruker = $ bruker;

/**
* Få varselets leveringskanaler.
*
* @Param Mixed $ Motifiable
* @return -matrise
*/
Offentlig funksjon via ($ varslerbar)

return ['Mail'];

/**
* Få e -postrepresentasjon av varselet.
*
* @Param Mixed $ Motifiable
* @return \ Illuminate \ Varsler \ Meldinger \ MailMessage
*/
offentlig funksjon Tomail ($ varslerbar)

Return (Ny MailMessage)
-> fra ('info@noen ganger-det-wont-work.com ',' admin ')
-> Emne ('Velkommen til portalen')
-> Markdown ('Mail.Velkommen.indeks ', [' bruker '=> $ this-> bruker]);

/**
* Få array -representasjonen av varselet.
*
* @Param Mixed $ Motifiable
* @return -matrise
*/
Offentlig funksjon ToArray ($ varslerbar)

komme tilbake [
//
];

Her, vær oppmerksom på Tomail -metoden så vel som konstruktøren av klassen fordi vi vil gi et objekt til den. Legg også merke til at vi bruker

-> Markdown ('noen.blad.php ');

Neste trinn er å presse dette varselet til å fungere. Et sted i RegisterController kan det hende du vil kalle dette (ikke gå inn på hvordan du vil utføre det, enten synkronisert eller i kø ...). Ikke glem å inkludere navneområdet til varselet øverst.

$ bruker = bruker :: opprette ([
'navn' => $ data ['name'],
'e -post' => $ data ['e -post'],
'lastName' => $ data ['lastname'],
'passord' => bcrypt ($ data ['passord']),
]);
$ user-> varsling (ny brukerregistrert ($ bruker));

Hvorfor går jeg så dypt? Vel, fordi jeg også vil vise deg hvordan du kan sende dataene dine til e -postmalen.

Neste kan du gå til Ressurser/visninger/mail/velkomst/indeks.blad.PHP (Det kan være hvilken som helst mappe og filnavn du ønsker) og limer inn dette:

@Component ('Mail :: Layout')
-- Overskrift --
@slot ('header')
@Component ('Mail :: header', ['url' => config ('app.url ')])
Headertittel
@endComponent
@endslot
-- Kropp --
Dette er hovedmeldingen vår $ bruker
-subcopy-
@Isset ($ subcopy)
@slot ('subcopy')
@Component ('Mail :: Subcopy')
$ subcopy
@endComponent
@endslot
@endisset
-bunntekst-
@slot ('bunntekst')
@Component ('Mail :: bunntekst')
© date ('y') config ('app.Navn') . Super bunntekst!
@endComponent
@endslot
@endComponent

Du kan nå enkelt legge til ethvert bilde i overskriften eller endre lenken inne i bunnteksten osv.

Håper dette hjelper.

Følg meg på Twitter
Legg til meg på LinkedIn