Varsler i Laravel

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.

Grunnleggende om varsler

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.

  • Post: Meldingene vil bli sendt i form av e-post til brukere.
  • TEKSTMELDING: Som navnet antyder, vil brukerne motta sms-varslinger på telefonen.
  • Slack: I dette tilfellet vil meldingene bli sendt på Slack-kanaler.
  • database: Dette alternativet lar deg lagre varsler i en database hvis du ønsker å bygge et tilpasset brukergrensesnitt for å vise det.

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!

Opprett en tilpasset varslingsklasse

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.

Slik sender du varsler

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å!

Konklusjon

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!