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