Wat is een Notification
Het notificatiesysteem (Notification) van Laravel is een mechanisme om via een uniforme API notificaties te versturen naar meerdere bezorgkanalen, zoals e-mail, sms, Slack en de database. Het verschil tussen Mail en Notification
Wil je dezelfde melding naar meerdere kanalen sturen, zoals een bevestiging dat een factuur is betaald, dan is een Notification de juiste keuze.
Een Notification-klasse maken
Genereer een klasse met het Artisan-commandomake:notification.
app/Notifications/ te staan. De klasse bevat een via()-methode en methoden die per kanaal het bericht genereren.
Notificaties versturen
Met de Notifiable-trait
App\Models\User bevat standaard de Notifiable-trait. Met de methode notify() verstuur je een notificatie.
De
Notifiable-trait is niet beperkt tot het User-model; je kunt hem aan elk model toevoegen.Met de Notification-facade
Om naar meerdere gebruikers tegelijk te versturen, gebruik je deNotification-facade.
sendNow().
Bezorgkanalen opgeven
Devia()-methode geeft een array terug met de te gebruiken kanalen.
Notificaties via het mailkanaal
De methodetoMail() geeft een MailMessage-instantie terug.
MailMessage zijn:
Meld je een fout, voeg dan de methode
error() toe: de knop wordt dan rood.
Markdown-notificatiemails
Je kunt ook rijke e-mails in Markdown-formaat gebruiken. Genereer de klasse met de optie--markdown.
toMail() gebruik je toMarkdownMail().
Notificaties via het databasekanaal
Met het databasekanaal sla je notificaties op in de database en toon je ze in de UI van je app.De tabel voorbereiden
Maak eerst de tabelnotifications aan.
De toArray-methode definiëren
De methodetoArray() geeft de op te slaan data als array terug.
data van de tabel notifications.
Notificaties ophalen
Met denotifications-relatie die de Notifiable-trait biedt, haal je notificaties op.
unreadNotifications.
Als gelezen markeren
MetmarkAsRead() markeer je een notificatie als gelezen.
Notificaties via de queue verwerken
Duurt het versturen van een notificatie lang, voeg dan de interfaceShouldQueue en de trait Queueable toe om de notificatie via de queue te verwerken. In klassen die je met make:notification genereert, zijn deze al geïmporteerd.
ShouldQueue, dan wordt de notificatie automatisch in de queue geplaatst zodra je notify() aanroept.
Tegelijk naar meerdere kanalen versturen
Door in devia()-methode meerdere kanalen terug te geven en voor elk kanaal een methode te definiëren, verstuur je dezelfde notificatie tegelijk naar meerdere kanalen.
On-demand notificaties
Wil je ook notificaties sturen naar mensen zonder account in je app, gebruik danNotification::route().