Meddelanden i Laravel

I den här artikeln kommer vi att utforska anmälningssystemet i Laravel webbramen. Anmälningssystemet i Laravel låter dig skicka meddelanden till användare via olika kanaler. Idag diskuterar vi hur du kan skicka meddelanden via mailkanalen.

Grunderna för meddelanden

Under applikationsutveckling behöver du ofta anmäla användare om olika tillståndsändringar. Det kan antingen vara att skicka e-postmeddelanden när orderstatus ändras eller skicka ett SMS om sin inloggningsaktivitet för säkerhetsändamål. I synnerhet talar vi om meddelanden som är korta och bara ger insikt om statens förändringar.

Laravel ger redan en inbyggd funktion som hjälper oss att uppnå något liknande meddelande. Faktum är att det skickar meddelanden till användarna en bris och en rolig upplevelse!

Skönheten i det här tillvägagångssättet är att det låter dig välja mellan olika kanaler, meddelanden skickas vidare. Låt oss snabbt gå igenom de olika anmälningskanalerna som stöds av Laravel.

  • Post: Meddelandena kommer att skickas i form av e-post till användare.
  • SMS: Som namnet antyder kommer användarna att få SMS-meddelanden på sin telefon.
  • Slak: I så fall skickas meddelandena på Slack-kanaler.
  • Databas: Med det här alternativet kan du lagra meddelanden i en databas om du vill skapa ett anpassat användargränssnitt för att visa det.

Bland olika meddelandekanaler använder vi mailkanalen i vårt exempel-användarfall som vi kommer att utveckla under den här handledningen.

Det är faktiskt ett ganska enkelt användningsfall som tillåter användare av vår ansökan att skicka meddelanden till varje användare. När användare får ett nytt meddelande i sin inkorg, meddelar vi dem om den här händelsen genom att skicka ett mail till dem. Självklart gör vi det genom att använda anmälningsfunktionen hos Laravel!

Skapa en anpassad anmälningsklass

Som vi diskuterade tidigare kommer vi att skapa en applikation som tillåter användare av vår ansökan att skicka meddelanden till varandra. Å andra sidan meddelar vi användare när de får ett nytt meddelande från andra användare via e-post.

I det här avsnittet skapar vi nödvändiga filer som krävs för att implementera användningsfallet som vi letar efter.

Till att börja med, låt oss skapa Meddelande modell som innehåller meddelanden som skickas av användare till varandra.

$ php artisan make: modell meddelande - migration

Vi måste också lägga till några fält som till, från och meddelande till meddelanden tabell. Så låt oss ändra migrationsfilen innan du kör vandra kommando.

inkrement ( 'id'); $ table-> heltal ('from', FALSE, TRUE); $ tabell-> heltal ('till', felaktigt, sant); $ Bords> text (meddelande '); $ Tabell-> tidsstämplar (); );  / ** * Omvandla migrationerna. * * @return void * / public function down () Schema :: dropIfExists ('messages'); 

Nu, låt oss köra kommandot migrera som skapar meddelandetabellen i databasen.

$ php hantverkare migrera

Det borde skapa meddelanden tabellen i databasen.

Se till att du har aktiverat standard Laravel-autentiseringssystemet i första hand så att funktioner som registrering och inloggning fungerar ut ur rutan. Om du inte är säker på hur du gör det, ger Laravel-dokumentationen en snabb inblick i det.

Eftersom varje anmälan i Laravel är representerad av en separat klass måste vi skapa en anpassad anmälningsklass som kommer att användas för att anmäla användare. Låt oss använda följande artisan kommando för att skapa en anpassad anmälningsklass-NewMessage.

$ php-hantverkare: anmälan NewMessage

Det borde skapa app / Meddelanden / NewMessage.php klass, så låt oss ersätta innehållet i den filen med följande innehåll.

fromUser = $ user;  / ** * Hämta meddelandets leveranskanaler. * * @param blandad $ anmälningsbar * @return array * / allmän funktion via ($ anmälningsbar) return ['mail'];  / ** * Hämta meddelandet om e-postmeddelandet. * * @param blandad $ anmälningsbar * @return \ Illuminate \ Notifications \ Meddelanden \ MailMessage * / public function toMail ($ anmälningsbar) $ subject = sprintf ('% s: Du har ett nytt meddelande från% s!' , config ('app.name'), $ this-> fromUser-> namn); $ greeting = sprintf ('Hello% s!', $ notifiable-> name); returnera (nya MailMessage) -> ämne ($ subject) -> hälsning ($ hälsning) -> hälsning ('Yours Faithfully') -> rad ('Introduktionen till anmälan.') -> åtgärd ('Meddelande Åtgärd' url ('/')) -> rad ('Tack för att du använde vår ansökan!');  / ** * Hämta array representation av meddelandet. * * @param blandad $ anmälningsbar * @return array * / allmän funktion toArray ($ anmälningsbar) return [//]; 

Eftersom vi ska använda postkanalen för att skicka meddelanden till användare, via Metoden är konfigurerad i enlighet därmed. Så det här är metoden som låter dig konfigurera kanaltypen för en anmälan.

Därefter finns det att maila metod som låter dig konfigurera olika e-postparametrar. Faktum är att att maila Metod bör återge förekomsten av \ Illuminate \ Notifications \ Meddelanden \ MailMessage, och den klassen innehåller användbara metoder som låter dig konfigurera e-postparametrar.

Bland olika metoder, den linje Metoden låter dig lägga till en rad i ett meddelande. Å andra sidan finns det verkan Metod som låter dig lägga till en Call-to-Action-knapp i ett meddelande.

På så sätt kan du formatera ett meddelande som ska skickas till användare. Så det är hur du ska konfigurera meddelandeklassen medan du använder mailkanalen för att skicka meddelanden.

I slutet måste du se till att du implementerar de nödvändiga metoderna enligt den kanaltyp som är konfigurerad i via metod. Om du till exempel använder databaskanalen som lagrar meddelanden i en databas behöver du inte konfigurera att maila metod; istället bör du implementera toArray metod som formaterar de data som behöver lagras i en databas.

Så här skickar du meddelanden

I det föregående avsnittet skapade vi en anmälningsklass som är klar att skicka meddelanden. I det här avsnittet skapar vi filer som visar hur du faktiskt kan skicka meddelanden med hjälp av Nytt meddelande anmälningsklass.

Låt oss skapa en kontrollerfil på app / HTTP / Controllers / NotificationController.php med följande innehåll.

middleware ( 'auth');  offentliga funktionsindex () // användare 2 skickar ett meddelande till användaren 1 $ message = new Message; $ message-> setAttribute ('from', 2); $ message-> setAttribute ('to', 1); $ message-> setAttribute ('message', 'Demo meddelande från användare 2 till användare 1.'); $ Meddelande-> Spara (); $ fromUser = Användare :: hitta (2); $ toUser = Användare :: hitta (1); // skicka meddelande med användarmodellen när användaren får ett nytt meddelande $ toUser-> notify (new NewMessage ($ fromUser)); // skicka meddelande genom att använda "Meddelande" fasaden Meddelande :: skicka ($ toUser, new NewMessage ($ fromUser)); 

Självklart måste du lägga till en tillhörande rutt i rutter / web.php fil.

Rutt :: get ('notify / index', 'NotificationController @ index');

Det finns två sätt Laravel tillåter dig att skicka meddelanden: genom att använda antingen den anmälningsbara enheten eller anmälningsfasaden.

Om entitetsmodellklassen använder Belysa \ Notifications \ Anmälningspliktigt egenskap, då kan du ringa anmäla metod på den modellen. De App \ Användare klassen implementerar Anmälningspliktig egenskap och blir sålunda den anmälningsbara enheten. Å andra sidan kan du också använda Illuminate \ Support \ Fasader \ Anmälan Fasad för att skicka meddelanden till användare.

Låt oss gå igenom index metod för regulatorn.

I vårt fall kommer vi att meddela användare när de får ett nytt meddelande. Så vi har försökt att efterlikna det beteendet i index metod i första hand.

Därefter har vi meddelat mottagaren om ett nytt meddelande med hjälp av anmäla metod på $ toUser objekt, som det är anmälningspliktig entitet.

$ toUser-> meddela (ny NewMessage ($ fromUser));

Du kanske har märkt att vi också passerar $ fromUser objekt i första argumentet av __konstruera metod, eftersom vi vill inkludera från användarnamn i ett meddelande.

Å andra sidan, om du vill efterlikna det med hjälp av Underrättelse fasad, det är ganska lätt att göra det med hjälp av följande kod.

Meddelande :: skicka ($ till användare, ny NewMessage ($ fromUser));

Som du kan se har vi använt skicka Metod för anmälningsfasaden att skicka en anmälan till en användare.

Gå vidare och öppna URL http: // your-laravel-site-domain / notify / index i din webbläsare. Om du inte är inloggad än, kommer du vidarebefordras till inloggningsskärmen. När du är inloggad ska du få ett meddelande om e-post till den e-postadress som bifogas användaren 1.

Du kanske undrar hur meddelandesystemet upptäcker till adress när vi inte har konfigurerat den någonstans än. I sådant fall försöker anmälningssystemet att hitta e-post egendom i anmälningsobjektet. Och den App \ Användare objektklassen har redan den egenskapen som vi använder standard Laravel-autentiseringssystemet.

Om du däremot vill åsidosätta detta beteende och vill använda en annan egenskap än e-post, behöver du bara definiera följande metod i din anmälningsklass.

allmän funktion routeNotificationForMail () returnera $ this-> email_address; 

Nu bör anmälningssystemet leta efter e-postadress egendom istället för e-post egendom för att hämta till adress.

Och så använder du anmälningssystemet i Laravel. Det ger oss också i slutet av den här artikeln!

Slutsats

Vad vi har gått igenom idag är en av de användbara, men minst diskuterade, funktionerna i Laravel-notifieringar. Det låter dig skicka meddelanden till användare via olika kanaler.

Efter en snabb introduktion implementerade vi ett verkligt exempel som visade hur vi skickade meddelanden via postkanalen. Faktum är att det är väldigt användbart om du skickar korta meddelanden om tillståndsändringar i din ansökan.

För er som antingen bara börjar med Laravel eller vill utvidga din kunskap, webbplats eller ansökan med tillägg, har vi en mängd olika saker du kan studera i Envato Market.

Om du har några frågor eller förslag, tveka inte att skicka in dem via foderet nedan!