In questo articolo, esploreremo il sistema di notifica nel framework web di Laravel. Il sistema di notifica in Laravel consente di inviare notifiche agli utenti su diversi canali. Oggi parleremo di come è possibile inviare notifiche tramite il canale di posta elettronica.
Durante lo sviluppo dell'applicazione, è spesso necessario informare gli utenti delle diverse modifiche allo stato. Potrebbe essere l'invio di notifiche e-mail quando lo stato dell'ordine è cambiato o l'invio di un SMS sulla loro attività di accesso per motivi di sicurezza. In particolare, stiamo parlando di messaggi brevi e forniscono solo informazioni dettagliate sui cambiamenti di stato.
Laravel fornisce già una funzione integrata che ci aiuta a ottenere qualcosa di simile: le notifiche. In effetti, rende l'invio di messaggi di notifica agli utenti un gioco da ragazzi e un'esperienza divertente!
La bellezza di questo approccio è che ti permette di scegliere tra diversi canali su cui verranno inviate le notifiche. Passiamo rapidamente attraverso i diversi canali di notifica supportati da Laravel.
Tra i diversi canali di notifica, utilizzeremo il canale di posta nel nostro caso d'uso di esempio che svilupperemo nel corso di questo tutorial.
In effetti, sarà un caso d'uso piuttosto semplice che consente agli utenti della nostra applicazione di inviare messaggi a ciascun utente. Quando gli utenti ricevono un nuovo messaggio nella loro casella di posta, li informeremo di questo evento inviando loro un'email. Certo, lo faremo usando la funzione di notifica di Laravel!
Come discusso in precedenza, creeremo un'applicazione che consente agli utenti della nostra applicazione di inviare messaggi tra loro. D'altra parte, notificheremo agli utenti quando ricevono un nuovo messaggio da altri utenti via e-mail.
In questa sezione creeremo i file necessari per implementare il caso d'uso che stiamo cercando.
Per cominciare, creiamo il Messaggio
modello che tiene reciprocamente i messaggi inviati dagli utenti.
$ php artisan make: model Message --migration
Abbiamo anche bisogno di aggiungere alcuni campi come a
, a partire dal
e Messaggio
al messaggi
tavolo. Quindi cambiamo il file di migrazione prima di eseguire il migrare
comando.
incrementi ( 'id'); $ table-> intero ('from', FALSE, TRUE); $ table-> integer ('to', FALSE, TRUE); $ Tavola-> testo ( 'messaggio'); $ Tavola-> timestamp (); ); / ** * Invertire le migrazioni. * * @return void * / public function down () Schema :: dropIfExists ('messages');
Ora, eseguiamo il comando migrate che crea la tabella dei messaggi nel database.
$ php artisan migrate
Quello dovrebbe creare il messaggi
tabella nel database.
Inoltre, assicurati di aver abilitato il sistema di autenticazione Laravel predefinito in modo che funzioni come la registrazione e l'accesso funzionino immediatamente. Se non sei sicuro di come farlo, la documentazione di Laravel fornisce una rapida panoramica di ciò.
Poiché ogni notifica in Laravel è rappresentata da una classe separata, è necessario creare una classe di notifica personalizzata che verrà utilizzata per informare gli utenti. Usiamo il seguente comando artisan per creare una classe di notifica personalizzata: NewMessage.
$ php artisan make: notifica NewMessage
Quello dovrebbe creare il app / notifiche / NewMessage.php
classe, quindi sostituiamo il contenuto di quel file con il seguente contenuto.
fromUser = $ utente; / ** * Ottieni i canali di consegna della notifica. * * @param mixed $ notifiable * @return array * / public function tramite ($ notifiable) return ['mail']; / ** * Ottieni la rappresentazione della posta della notifica. * * @param mixed $ notifiable * @return \ Illuminate \ Notifications \ Messages \ MailMessage * / public function toMail ($ notifiable) $ subject = sprintf ('% s: hai un nuovo messaggio da% s!' , config ('app.name'), $ this-> fromUser-> nome); $ greeting = sprintf ('Ciao% s!', $ notifiable-> nome); return (new MailMessage) -> subject ($ subject) -> greeting ($ greeting) -> saluto ('Yours Faithfully') -> line ('L'introduzione alla notifica.') -> action ('Azione di notifica', url ('/')) -> line ('Grazie per aver usato la nostra applicazione!'); / ** * Ottieni la rappresentazione dell'array della notifica. * * @param mixed $ notifiable * @return array * / public function toArray ($ notifiable) return [//];
Dato che useremo il canale di posta per inviare notifiche agli utenti, il attraverso
il metodo è configurato di conseguenza. Quindi questo è il metodo che ti permette di configurare il tipo di canale di una notifica.
Avanti, c'è il spedire una lettera
metodo che ti permette di configurare vari parametri email. In effetti, il spedire una lettera
il metodo dovrebbe restituire l'istanza di \ Illuminate \ Comunicazioni \ Messaggi \ MailMessage
, e quella classe fornisce metodi utili che consentono di configurare i parametri di posta elettronica.
Tra i vari metodi, il linea
metodo consente di aggiungere una singola riga in un messaggio. D'altra parte, c'è il azione
metodo che consente di aggiungere un pulsante di invito all'azione in un messaggio.
In questo modo, puoi formattare un messaggio che verrà inviato agli utenti. Ecco come si suppone di configurare la classe di notifica mentre si utilizza il canale di posta per inviare notifiche.
Alla fine, è necessario assicurarsi di implementare i metodi necessari in base al tipo di canale configurato nel attraverso
metodo. Ad esempio, se si utilizza il canale del database che memorizza le notifiche in un database, non è necessario configurare il spedire una lettera
metodo; invece, dovresti implementare il toArray
metodo, che formatta i dati che devono essere memorizzati in un database.
Nella sezione precedente, abbiamo creato una classe di notifica pronta per inviare notifiche. In questa sezione creeremo dei file che dimostrano come potresti effettivamente inviare notifiche usando il Nuovo messaggio
classe di notifica.
Creiamo un file di controller su app / Http / Controller / NotificationController.php
con i seguenti contenuti.
middleware ( 'auth'); public function index () // utente 2 invia un messaggio all'utente 1 $ message = new Message; $ message-> setAttribute ('from', 2); $ message-> setAttribute ('to', 1); $ message-> setAttribute ('message', 'Demo message from user 2 to user 1.'); $ Message-> save (); $ fromUser = User :: find (2); $ toUser = User :: find (1); // invia una notifica usando il modello "utente", quando l'utente riceve un nuovo messaggio $ toUser-> notify (new NewMessage ($ fromUser)); // invia una notifica usando la notifica Notification :: send ($ toUser, new NewMessage ($ fromUser));
Naturalmente, è necessario aggiungere un percorso associato in percorsi / web.php
file.
Route :: get ('notify / index', 'NotificationController @ index');
Ci sono due modi in cui Laravel ti consente di inviare notifiche: utilizzando l'entità notificabile o la facciata di notifica.
Se la classe del modello entità utilizza il Illuminare \ Notifiche \ notificabile
tratto, quindi si potrebbe chiamare il notificare
metodo su quel modello. Il App \ User
la classe implementa il denuncia
caratteristica e quindi diventa l'entità notificabile. D'altra parte, potresti anche usare il Illuminare \ Support \ Facciate \ Notifica
Facciata per inviare notifiche agli utenti.
Passiamo al indice
metodo del controller.
Nel nostro caso, notificheremo agli utenti quando ricevono un nuovo messaggio. Quindi abbiamo cercato di imitare quel comportamento nel indice
metodo in primo luogo.
Successivamente, abbiamo avvisato l'utente destinatario di un nuovo messaggio utilizzando il notificare
metodo sul $ touser
oggetto, come è il denuncia entità.
$ toUser-> notify (new NewMessage ($ fromUser));
Potresti aver notato che anche noi passiamo il $ fROMUSER
oggetto nel primo argomento del __costruire
metodo, dal momento che vogliamo includere il a partire dal nome utente in un messaggio.
D'altra parte, se vuoi imitarla usando il Notifica
facciata, è abbastanza facile farlo utilizzando il seguente frammento.
Notifica :: send ($ toUser, new NewMessage ($ fromUser));
Come puoi vedere, abbiamo usato il inviare
metodo della facciata di notifica per inviare una notifica a un utente.
Vai avanti e apri l'URL http: // your-laravel-site-domain / notify / index nel tuo browser. Se non hai ancora effettuato l'accesso, verrai reindirizzato alla schermata di accesso. Una volta effettuato l'accesso, dovresti ricevere un'email di notifica all'indirizzo e-mail allegato all'utente 1
.
Ci si potrebbe chiedere come il sistema di notifica rileva il a
indirizzo quando non lo abbiamo ancora configurato da nessuna parte. In tal caso, il sistema di notifica tenta di trovare il file e-mail
proprietà nell'oggetto notificabile. E il App \ User
la classe oggetto ha già quella proprietà poiché stiamo usando il sistema di autenticazione Laravel predefinito.
Tuttavia, se si desidera ignorare questo comportamento e si desidera utilizzare una proprietà diversa diversa dalla posta elettronica, è sufficiente definire il seguente metodo nella classe di notifica.
public function routeNotificationForMail () return $ this-> email_address;
Ora, il sistema di notifica dovrebbe cercare il indirizzo email
proprietà invece del e-mail
proprietà per recuperare il a
indirizzo.
E questo è come usare il sistema di notifica in Laravel. Questo ci porta alla fine di questo articolo!
Quello che abbiamo passato oggi è una delle funzioni utili, ma meno discusse, nelle notifiche di Laravel. Ti consente di inviare notifiche agli utenti su diversi canali.
Dopo una rapida introduzione, abbiamo implementato un esempio reale che dimostra come inviare notifiche tramite il canale di posta. In effetti, è molto utile nel caso di invio di brevi messaggi relativi a cambiamenti di stato nella tua applicazione.
Per quelli di voi che stanno appena iniziando con Laravel o stanno cercando di espandere le vostre conoscenze, il vostro sito o la vostra applicazione con estensioni, abbiamo una varietà di cose che potete studiare nel mercato Envato.
Se hai domande o suggerimenti, non esitare a pubblicarli utilizzando il feed qui sotto!