Meldingen in Laravel

In dit artikel gaan we het meldingssysteem in het Laravel-webraamwerk verkennen. Met het meldingssysteem in Laravel kunt u meldingen verzenden naar gebruikers via verschillende kanalen. Vandaag bespreken we hoe u meldingen via het e-mailkanaal kunt verzenden.

Basisprincipes van meldingen

Tijdens de ontwikkeling van toepassingen moet u gebruikers vaak op de hoogte stellen van verschillende statuswijzigingen. Het kan zijn dat u e-mailmeldingen verzendt wanneer de bestelstatus is gewijzigd of een sms verzendt over hun aanmeldingsactiviteit voor veiligheidsdoeleinden. We hebben het in het bijzonder over korte berichten en geven alleen inzicht in de statusveranderingen.

Laravel biedt al een ingebouwde functie waarmee we iets vergelijkbaars kunnen bereiken. Sterker nog, het maakt het verzenden van kennisgevingen aan gebruikers een fluitje van een cent en een leuke ervaring!

Het mooie van die aanpak is dat je kunt kiezen uit verschillende kanalen waar meldingen naartoe worden gestuurd. Laten we snel de verschillende meldingskanalen bekijken die door Laravel worden ondersteund.

  • Mail: De meldingen worden verzonden in de vorm van e-mail aan gebruikers.
  • SMS: Zoals de naam al doet vermoeden, ontvangen gebruikers sms-meldingen op hun telefoon.
  • slack: In dit geval worden de meldingen verzonden op Slack-kanalen.
  • Database: Met deze optie kunt u meldingen in een database opslaan als u een aangepaste gebruikersinterface wilt maken om deze weer te geven.

Onder verschillende meldingskanalen gebruiken we het e-mailkanaal in onze voorbeeldgebruikscase die we in de loop van deze zelfstudie gaan ontwikkelen.

In feite is het een vrij eenvoudige use-case die gebruikers van onze applicatie toestaat om berichten naar elke gebruiker te sturen. Wanneer gebruikers een nieuw bericht in hun inbox ontvangen, zullen we hen over dit evenement informeren door een e-mail te sturen naar hen. Natuurlijk doen we dat met behulp van de meldingsfunctie van Laravel!

Maak een aangepaste meldingsklasse

Zoals we eerder hebben besproken, gaan we een applicatie opzetten waarmee gebruikers van onze applicatie berichten naar elkaar kunnen verzenden. Aan de andere kant zullen we gebruikers op de hoogte stellen wanneer ze een nieuw bericht ontvangen van andere gebruikers via e-mail.

In dit gedeelte maken we de benodigde bestanden die nodig zijn om de use-case te implementeren waarnaar we op zoek zijn.

Om te beginnen, laten we het maken Bericht model dat berichten bevat die door gebruikers aan elkaar zijn verzonden.

$ php artisan make: model Message --migration

We moeten ook een paar velden toevoegen zoals naar, van en bericht naar de berichten tafel. Dus laten we het migratiebestand wijzigen voordat het wordt uitgevoerd trekken commando.

verhogingen ( 'id'); $ table-> integer ('from', FALSE, TRUE); $ table-> integer ('to', FALSE, TRUE); $ Tafel-> text ( 'e-mail'); $ Tafel-> timestamps (); );  / ** * Keer de migraties terug. * * @return void * / public function down () Schema :: dropIfExists ('messages'); 

Laten we nu de opdracht migreren uitvoeren waarmee de berichtentabel in de database wordt gemaakt.

$ php artisan migreren

Dat zou het moeten maken berichten tabel in de database.

Zorg er ook voor dat u het standaard Laravel-authenticatiesysteem in de eerste plaats hebt ingeschakeld, zodat functies zoals registratie en login uit de doos werken. Als u niet zeker weet hoe u dat moet doen, geeft de documentatie van Laravel u daar snel inzicht in.

Aangezien elke melding in Laravel wordt vertegenwoordigd door een afzonderlijke klasse, moeten we een aangepaste meldingsklasse maken die zal worden gebruikt om gebruikers op de hoogte te stellen. Laten we de volgende artisan-opdracht gebruiken om een ​​aangepaste meldingsklasse te maken: NewMessage.

$ php artisan make: notificatie NewMessage

Dat zou het moeten maken app / Meldingen / NewMessage.php klasse, dus laten we de inhoud van dat bestand vervangen door de volgende inhoud.

fromUser = $ gebruiker;  / ** * Ontvang de afleveringskanalen van de melding. * * @param mixed $ notifiable * @return array * / public function via ($ notifiable) return ['mail'];  / ** * Ontvang de e-mailrepresentatie van de melding. * * @param mixed $ notifiable * @return \ Illuminate \ Notifications \ Messages \ MailMessage * / public function toMail ($ notifiable) $ subject = sprintf ('% s: u hebt een nieuw bericht van% s!' , config ('app.name'), $ this-> fromUser-> naam); $ greeting = sprintf ('Hello% s!', $ notifiable-> name); return (nieuwe MailMessage) -> onderwerp ($ onderwerp) -> begroeting ($ begroeting) -> aanhef ('Yours Faithfully') -> line ('De inleiding tot de melding') -> actie ('Meldingsactie', url ('/')) -> regel ('Bedankt voor het gebruik van onze applicatie!');  / ** * Krijg de array-weergave van de melding. * * @param gemengd $ meldingsplichtig * @return array * / openbare functie toArray ($ meldingsplichtig) retour [//]; 

Aangezien we het e-mailkanaal gebruiken om meldingen naar gebruikers te verzenden, is het via methode is overeenkomstig geconfigureerd. Dit is dus de methode waarmee u het kanaaltype van een melding kunt configureren.

Vervolgens is er de mailen methode waarmee u verschillende e-mailparameters kunt configureren. In feite is de mailen methode moet het exemplaar van retourneren \ Illuminate \ Notificaties \ Berichten \ MailMessage, en die klasse biedt nuttige methoden waarmee u e-mailparameters kunt configureren.

Onder verschillende methoden, de lijn methode kunt u een enkele regel in een bericht toevoegen. Aan de andere kant is er de actie methode waarmee u een call-to-action-knop in een bericht kunt toevoegen.

Op deze manier kunt u een bericht opmaken dat naar gebruikers wordt verzonden. Dus dat is hoe je de kennisgevingsklasse zou moeten configureren terwijl je het e-mailkanaal gebruikt om meldingen te verzenden.

Aan het einde moet u ervoor zorgen dat u de noodzakelijke methoden implementeert volgens het kanaaltype dat is geconfigureerd in de via methode. Als u bijvoorbeeld het databasekanaal gebruikt dat meldingen in een database opslaat, hoeft u de server niet te configureren mailen methode; in plaats daarvan zou u het moeten implementeren toArray methode, die de gegevens opmaakt die in een database moeten worden opgeslagen.

Hoe meldingen te verzenden

In de vorige sectie hebben we een meldingsklasse gemaakt die gereed is voor het verzenden van meldingen. In deze sectie zullen we bestanden maken die demonstreren hoe je meldingen kunt verzenden met behulp van de Nieuw bericht kennisgevingsklasse.

Laten we een controllerbestand maken op app / Http / Controllers / NotificationController.php met de volgende inhoud.

middleware (auth);  public function index () // gebruiker 2 stuurt een bericht naar gebruiker 1 $ message = new Message; $ message-> setAttribute ('from', 2); $ message-> setAttribute ('to', 1); $ message-> setAttribute ('message', 'Demo message from user 2 to user 1.'); $ Bericht-> save (); $ fromUser = Gebruiker: find (2); $ toUser = Gebruiker: find (1); // bericht verzenden via het "gebruiker" -model, wanneer de gebruiker een nieuw bericht ontvangt $ toUser-> notify (new NewMessage ($ fromUser)); // bericht verzenden met behulp van de "Melding" -voorgevel Melding :: send ($ toUser, new NewMessage ($ fromUser)); 

Natuurlijk moet u een gekoppelde route toevoegen in de routes / web.php het dossier.

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

Er zijn twee manieren waarop Laravel u toestaat om meldingen te verzenden: door gebruik te maken van de meldingsplichtige entiteit of de meldingsvoorgevel.

Als de klasse van het entiteitsmodel de Verlichten \ Meldingen \ Aangifteplichtige eigenschap, dan zou je het kunnen noemen verwittigen methode op dat model. De App \ User klasse implementeert de aangifteplichtige eigenschap en dus wordt het de te melden entiteit. Aan de andere kant kunt u ook de Verlichten \ Support \ Gevels \ Notification Facade om meldingen naar gebruikers te verzenden.

Laten we door de inhoudsopgave methode van de controller.

In ons geval gaan we gebruikers op de hoogte stellen wanneer ze een nieuw bericht ontvangen. Dus we hebben geprobeerd om dat gedrag na te bootsen in de inhoudsopgave methode in de eerste plaats.

Vervolgens hebben we de geadresseerde op de hoogte gesteld van een nieuw bericht met behulp van de verwittigen methode op de $ TOUSER object, omdat het de aangifteplicht entiteit.

$ toUser-> notify (new NewMessage ($ fromUser));

Je hebt misschien gemerkt dat we ook de $ fromUser object in het eerste argument van de __construct methode, omdat we de van gebruikersnaam in een bericht.

Aan de andere kant, als u het wilt nabootsen met behulp van de Kennisgeving gevel, het is vrij eenvoudig om dit te doen met behulp van het volgende fragment.

Melding :: send ($ toUser, new NewMessage ($ fromUser));

Zoals u kunt zien, hebben we de sturen methode van de Notification-façade om een ​​kennisgeving aan een gebruiker te verzenden.

Ga je gang en open de URL http: // your-laravel-site-domain / notify / index in je browser. Als u nog niet bent ingelogd, wordt u doorgestuurd naar het inlogscherm. Nadat je bent ingelogd, ontvang je een e-mail met een melding op het e-mailadres dat is gekoppeld aan de gebruiker 1.

U vraagt ​​zich misschien af ​​hoe het meldingssysteem de naar adres als we het nog niet hebben geconfigureerd. In dat geval probeert het meldingssysteem de e-mail eigenschap in het aan te melden object. En de App \ User objectklasse heeft die eigenschap al, omdat we het standaard Laravel-authenticatiesysteem gebruiken.

Als u echter dit gedrag wilt overschrijven en u een andere eigenschap dan e-mail wilt gebruiken, hoeft u alleen de volgende methode in uw kennisgevingsklasse te definiëren.

public function routeNotificationForMail () return $ this-> email_address; 

Nu moet het meldingssysteem zoeken naar de e-mailadres eigenschap in plaats van de e-mail eigenschap om het te halen naar adres.

En zo gebruik je het meldingssysteem in Laravel. Dat brengt ons ook aan het einde van dit artikel!

Conclusie

Wat we vandaag hebben meegemaakt, is een van de nuttige, maar toch minst besproken functies in Laravel-meldingen. Hiermee kunt u meldingen verzenden naar gebruikers via verschillende kanalen.

Na een korte introductie hebben we een voorbeeld in de praktijk geïmplementeerd dat aantoonde hoe meldingen via het e-mailkanaal konden worden verzonden. In feite is het echt handig in het geval van het verzenden van korte berichten over statuswijzigingen in uw applicatie.

Voor degenen onder u die net zijn begonnen met Laravel of die op zoek zijn om uw kennis, site of applicatie uit te breiden met uitbreidingen, hebben we een aantal dingen die u kunt bestuderen in Envato Market.

Als u vragen of suggesties heeft, aarzel dan niet om ze te plaatsen met behulp van de onderstaande feed!