I denne artikkelen skal vi utforske varslingssystemet i Laravel web-rammeverket. Meldingssystemet i Laravel lar deg sende meldinger til brukere over forskjellige kanaler. I dag diskuterer vi hvordan du kan sende varsler over postkanalen.
Under applikasjonsutvikling må du ofte varsle brukere om forskjellige tilstandsendringer. Det kan enten være å sende e-postvarsler når ordrestatusen endres eller sende en SMS om sin påloggingsaktivitet for sikkerhetsformål. Spesielt snakker vi om meldinger som er korte og bare gir innsikt i statens endringer.
Laravel tilbyr allerede en innebygd funksjon som hjelper oss med å oppnå noe lignende varsler. Faktisk gjør det å sende meldingsmeldinger til brukerne en bris og en morsom opplevelse!
Skjønnheten i denne tilnærmingen er at den lar deg velge fra forskjellige kanaler, meldinger vil bli sendt på. La oss raskt gå gjennom de forskjellige varselkanalene som støttes av Laravel.
Blant ulike varslingskanaler bruker vi e-postkanalen i vårt eksempelbrukstilfelle som vi skal utvikle i løpet av denne opplæringen.
Faktisk vil det være et ganske enkelt bruk-tilfelle som tillater brukere av applikasjonen å sende meldinger til hver bruker. Når brukere mottar en ny melding i innboksen, informerer vi dem om denne hendelsen ved å sende en e-post til dem. Selvfølgelig gjør vi det ved å bruke varslingsfunksjonen til Laravel!
Som vi diskuterte tidligere, skal vi sette opp et program som lar brukerne av vår søknad sende meldinger til hverandre. På den annen side vil vi varsle brukere når de mottar en ny melding fra andre brukere via e-post.
I denne delen skal vi opprette nødvendige filer som kreves for å implementere brukskassen som vi leter etter.
Til å begynne med, la oss lage Budskap
modell som holder meldinger sendt av brukere til hverandre.
$ php artisan make: modell melding - migrasjon
Vi må også legge til noen få felt som til
, fra
og budskap
til meldinger
bord. Så la oss endre migreringsfilen før du kjører migrere
kommando.
trinn ( 'id'); $ table-> heltall ('fra', FALSE, SANT); $ tabell-> heltall ('til', feil, sant); $ Tabell-> tekst ( 'melding'); $ Tabell-> tidsstempler (); ); / ** * Omvendt migrasjonene. * * @return void * / offentlig funksjon ned () Schema :: dropIfExists ('messages');
La oss nå kjøre kommandoen Migrere som lager meldingsbordet i databasen.
$ php håndverk migrere
Det burde skape meldinger
tabell i databasen.
Sørg også for at du har aktivert standard Laravel-godkjenningssystemet i utgangspunktet slik at funksjoner som registrering og innlogging trer ut av boksen. Hvis du ikke er sikker på hvordan du gjør det, gir Laravel-dokumentasjonen et raskt innblikk i det.
Siden hvert varsel i Laravel er representert av en egen klasse, må vi opprette en tilpasset varslingsklasse som vil bli brukt til å varsle brukere. La oss bruke følgende artisan-kommando for å lage en tilpasset varslingsklasse-NewMessage.
$ php artisan make: melding NewMessage
Det burde skape app / Meldinger / NewMessage.php
klasse, så la oss erstatte innholdet i den filen med følgende innhold.
fromUser = $ bruker; / ** * Få varselets leveranse kanaler. * * @param blandet $ notifiserbar * @return array * / offentlig funksjon via ($ notifiable) return ['mail']; / ** * Få postrepresentasjonen av varselet. * * @param mixed $ notifiable * @return \ Illuminate \ Notifications \ Meldinger \ MailMessage * / offentlig funksjon toMail ($ notifiable) $ subject = sprintf ('% s: Du har en ny melding fra% s!' , config ('app.name'), $ this-> fromUser-> navn); $ greeting = sprintf ('Hello% s!', $ notifiable-> navn); returnere (ny MailMessage) -> emne ($ emne) -> hilsen ($ hilsen) -> hilsen ('Yours Faithfully') -> linje ('Introduksjonen til varselet.') -> handling ('Notification Action' url ('/')) -> linje ('Takk for at du bruker vår søknad!'); / ** * Få array representasjonen av varselet. * * @param blandet $ notifiserbar * @return array * / offentlig funksjon toArray ($ notifiable) return [//];
Som vi skal bruke e-postkanalen til å sende varsler til brukere, vil via
Metoden er konfigurert tilsvarende. Så dette er metoden som lar deg konfigurere kanaltypen til et varsel.
Deretter er det Å sende post
Metode som lar deg konfigurere ulike e-postparametere. Faktisk er det Å sende post
Metoden skal returnere forekomsten av \ Illuminate \ Meldinger \ Meldinger \ MailMessage
, og den klassen gir nyttige metoder som lar deg konfigurere e-postparametere.
Blant ulike metoder, den linje
Metoden lar deg legge til en enkelt linje i en melding. På den annen side er det handling
Metode som lar deg legge til en handlingsknapp i en melding.
På denne måten kan du formatere en melding som skal sendes til brukere. Så det er slik at du skal konfigurere varselklassen mens du bruker postkanalen til å sende varsler.
På slutten må du sørge for at du implementerer nødvendige metoder i henhold til kanaltypen som er konfigurert i via
metode. Hvis du for eksempel bruker databanken som lagrer varsler i en database, trenger du ikke å konfigurere Å sende post
metode; I stedet bør du implementere toArray
metode, som formaterer dataene som må lagres i en database.
I den forrige delen opprettet vi en varslingsklasse som er klar til å sende varsler. I denne delen lager vi filer som viser hvordan du faktisk kan sende varsler ved hjelp av Ny melding
varslingsklasse.
La oss lage en kontrollerfil på app / Http / elektro / NotificationController.php
med følgende innhold.
mellomvare ( 'aut'); offentlige funksjonsindeks () // bruker 2 sender en melding til brukeren 1 $ melding = ny melding; $ message-> setAttribute ('from', 2); $ message-> setAttribute ('to', 1); $ message-> setAttribute ('message', 'Demo melding fra bruker 2 til bruker 1.'); $ Melding-> Lagre (); $ fromUser = Bruker :: finn (2); $ toUser = Bruker :: finn (1); // sende varsling ved hjelp av "bruker" -modellen, når brukeren mottar ny melding $ toUser-> varsle (ny NewMessage ($ fromUser)); // send varsling ved hjelp av "Varsling" -fasade Varsling :: send ($ toUser, new NewMessage ($ fromUser));
Selvfølgelig må du legge til en tilhørende rute i ruter / web.php
fil.
Rute :: get ('notify / index', 'NotificationController @ index');
Det er to måter Laravel lar deg sende varsler: ved å bruke enten den meldbare enheten eller varslingsfacaden.
Hvis enheten modell klassen bruker Belyse \ Meldinger \ Melde
egenskap, så kan du ringe gi beskjed
metode på den modellen. De App \ Bruker
klassen implementerer Melde
egenskap og dermed blir den meldbare enheten. På den annen side kan du også bruke Belyse \ Support \ Fasader \ Melding
Fasade for å sende varsler til brukere.
La oss gå gjennom index
metode for kontrolleren.
I vårt tilfelle skal vi varsle brukere når de mottar en ny melding. Så vi har forsøkt å etterligne den oppførselen i index
metode i utgangspunktet.
Deretter har vi varslet mottakerbrukeren om en ny melding ved hjelp av gi beskjed
metode på $ touser
objekt, som det er meldepliktig enhet.
$ toUser-> varsle (ny NewMessage ($ fromUser));
Du har kanskje lagt merke til at vi også passerer $ fromUser
objekt i det første argumentet til __construct
metode, siden vi vil inkludere fra brukernavn i en melding.
På den annen side, hvis du vil etterligne den ved hjelp av Melding
fasaden, det er ganske enkelt å gjøre det ved å bruke følgende utdrag.
Varsling :: send ($ toUser, new NewMessage ($ fromUser));
Som du kan se, har vi brukt sende
Metode for varslingsfasaden for å sende et varsel til en bruker.
Gå videre og åpne URL http: // din-laravel-site-domain / notify / index i nettleseren din. Hvis du ikke er logget inn enda, blir du omdirigert til påloggingsskjermen. Når du er logget inn, bør du motta en e-postvarsel på e-postadressen som er vedlagt brukeren 1
.
Du lurer kanskje på hvordan varslingssystemet oppdager til
adresse når vi ikke har konfigurert det hvor som helst ennå. I så fall forsøker varslingssystemet å finne e-post
eiendom i det meldbare objektet. Og App \ Bruker
Objektklasse har allerede den egenskapen som vi bruker standard Laravel-autentiseringssystemet.
Hvis du imidlertid vil overstyre denne virkemåten og vil bruke en annen eiendom enn e-post, må du bare definere følgende metode i varslingsklassen din.
offentlig funksjon routeNotificationForMail () return $ this-> email_address;
Nå bør varslingssystemet lete etter epostadresse
eiendom i stedet for e-post
eiendom for å hente til
adresse.
Og det er hvordan du bruker varslingssystemet i Laravel. Det bringer oss til slutten av denne artikkelen også!
Det vi har gjennomgått i dag, er en av de nyttige, men minst diskuterte, funksjonene i Laravel-varsler. Den lar deg sende meldinger til brukere over forskjellige kanaler.
Etter en rask introduksjon implementerte vi et eksempel på ekte verden som viste hvordan man sender meldinger over postkanalen. Faktisk er det veldig praktisk når det gjelder å sende korte meldinger om tilstandsendringer i søknaden din.
For de av dere som enten bare er i gang med Laravel eller ser ut til å utvide din kunnskap, nettsted eller søknad med utvidelser, har vi en rekke ting du kan studere i Envato Market.
Skulle du ha noen spørsmål eller forslag, ikke nøl med å legge inn dem ved hjelp av feedet under!