În acest articol, vom explora sistemul de notificare în cadrul web Laravel. Sistemul de notificare din Laravel vă permite să trimiteți notificări către utilizatori pe diferite canale. Astăzi, vom discuta modul în care puteți trimite notificări prin intermediul canalului de e-mail.
În timpul dezvoltării aplicațiilor, trebuie adesea să informați utilizatorii despre diferite schimbări de stat. Poate fie să trimiteți notificări prin e-mail atunci când starea comenzii este modificată, fie să trimiteți un SMS despre activitatea lor de conectare din motive de securitate. În special, vorbim despre mesaje care sunt scurte și oferă doar o perspectivă asupra schimbărilor de stat.
Laravel oferă deja o funcție încorporată care ne ajută să realizăm o notificare similară. De fapt, face trimiterea mesajelor de notificare utilizatorilor o briză și o experiență distractivă!
Frumusețea acestei abordări este că vă permite să alegeți dintre diferitele canale pe care vor fi trimise notificările. Să trecem rapid la diferitele canale de notificare susținute de Laravel.
Dintre diferitele canale de notificare, vom folosi canalul de e-mail în exemplul cazului nostru de utilizare pe care îl vom dezvolta pe parcursul acestui tutorial.
De fapt, va fi un caz simplu de utilizare care permite utilizatorilor aplicației noastre să trimită mesaje către fiecare utilizator. Când utilizatorii primesc un mesaj nou în căsuța de e-mail, le vom notifica despre acest eveniment trimițând un e-mail acestora. Desigur, vom face acest lucru folosind funcția de notificare a lui Laravel!
După cum am discutat mai devreme, vom crea o aplicație care să permită utilizatorilor aplicației noastre să trimită mesaje reciproc. Pe de altă parte, vom notifica utilizatorii atunci când primesc un mesaj nou de la alți utilizatori prin e-mail.
În această secțiune, vom crea fișierele necesare care sunt necesare pentru a implementa cazul de utilizare pe care îl căutăm.
Pentru a începe, să creați Mesaj
model care conține mesajele trimise de utilizatori între ele.
$ php artizan face: model Mesaj - migrare
Trebuie, de asemenea, să adăugăm câțiva câmpuri la
, din
și mesaj
la mesaje
masa. Deci, să schimbăm fișierul de migrare înainte de a rula migra
comanda.
incremente ( 'id'); $ table-> integer ('de la', FALSE, TRUE); $ table-> întreg ('to', FALSE, TRUE); $ Table-> text ( 'mesaj'); $ Table-> timestamps (); ); / ** * Reveniți la migrații. * * @return void * / funcția publică în jos () Schema :: dropIfExists ('mesaje');
Acum, să executați comanda de migrare care creează tabela de mesaje în baza de date.
$ php artizan migrează
Aceasta ar trebui să creeze mesaje
tabel în baza de date.
De asemenea, asigurați-vă că ați activat în primul rând sistemul de autentificare Laravel implicit, astfel încât funcțiile precum înregistrarea și conectarea să funcționeze din cutie. Dacă nu sunteți sigur cum să faceți acest lucru, documentația Laravel oferă o perspectivă rapidă asupra acestui aspect.
Deoarece fiecare notificare din Laravel este reprezentată de o clasă separată, trebuie să creați o clasă de notificare personalizată care va fi utilizată pentru a notifica utilizatorii. Să utilizăm următoarea comandă artizanală pentru a crea o clasă de notificare personalizată - NewMessage.
$ php artisan face: notificare NewMessage
Aceasta ar trebui să creeze app / Notificări / NewMessage.php
class, deci să înlocuim conținutul acelui fișier cu următorul conținut.
fromUser = $ user; / ** * Obțineți canalele de livrare ale notificării. * * @param amestecat $ notifiable * @return array * / funcția publică prin ($ notifiable) return ['mail']; / ** * Obțineți reprezentarea prin poștă a notificării. ($ notifiable) $ subject = sprintf ('% s: Ați primit un mesaj nou de la% s!' , config ('app.name'), $ this-> fromUser-> name); $ greeting = sprintf ("Bună ziua% s!", $ notifiable-> name); retur (noul MailMessage) -> subiect ($ subiect) -> salut ($ salutare) -> salut (' url ('/')) -> linie ('Vă mulțumim pentru utilizarea aplicației noastre!'); / ** * Obținerea reprezentării matrice a notificării. * * @param amestecat $ notifiable * @return array * / funcția publică toArray ($ notifiable) return [//];
Întrucât vom folosi canalul de poștă electronică pentru a trimite notificări utilizatorilor, prin intermediul
metoda este configurată în consecință. Deci, aceasta este metoda care vă permite să configurați tipul de canal al unei notificări.
Mai departe, există toMail
care vă permite să configurați diferiți parametri de e-mail. De fapt, toMail
metoda ar trebui să returneze instanța \ Illuminate \ Notificări \ Mesaje \ MailMessage
, iar acea clasă oferă metode utile care vă permit să configurați parametrii de e-mail.
Dintre diferitele metode, linia
vă permite să adăugați o singură linie într-un mesaj. Pe de altă parte, există acțiune
care vă permite să adăugați un buton de chemare la acțiune într-un mesaj.
În acest fel, puteți formata un mesaj care va fi trimis utilizatorilor. De aceea ar trebui să configurați clasa de notificări în timp ce utilizați canalul de e-mail pentru a trimite notificări.
În final, trebuie să vă asigurați că implementați metodele necesare în funcție de tipul de canal configurat în prin intermediul
metodă. De exemplu, dacă utilizați canalul bazei de date care stochează notificările într-o bază de date, nu este necesar să configurați toMail
metodă; în schimb, ar trebui să pună în aplicare toArray
care formulează datele care trebuie stocate într-o bază de date.
În secțiunea anterioară, am creat o clasă de notificări care este gata să trimită notificări. În această secțiune, vom crea fișiere care să demonstreze modul în care puteați să trimiteți notificări folosind Mesaj nou
clasa de notificare.
Să creăm un fișier de controler la app / HTTP / Controllers / NotificationController.php
cu următorul conținut.
middleware ( 'auth'); indexul funcției publice () // user 2 trimite un mesaj utilizatorului 1 $ message = mesaj nou; $ message-> setAttribute ('de la', 2); $ message-> setAttribute ('to', 1); $ message-> setAttribute ('message', 'Demo message from user 2 to user 1.'); $ Message> Salvare (); $ dinUser = Utilizator :: găsi (2); $ toUser = Utilizator :: găsi (1); // trimiteți notificarea utilizând modelul "utilizator", atunci când utilizatorul primește un mesaj nou $ toUser-> notify (noul NewMessage ($ fromUser)); // trimiteți notificări utilizând notificarea de fațadă "Notificare" :: trimiteți ($ toUser, new NewMessage ($ fromUser));
Desigur, trebuie să adăugați o rută asociată în rute / web.php
fişier.
Route :: get ('notify / index', 'NotificationController @ index');
Există două moduri în care Laravel vă permite să trimiteți notificări: utilizând fie entitatea notificabilă, fie fațada de notificare.
Dacă clasa de model entitate utilizează Illuminate Notificări \ \ notificabile
trait, atunci ați putea apela notifica
pe acest model. App \ utilizator
clasa implementează notificabile
și astfel devine entitatea notificabilă. Pe de altă parte, puteți utiliza și Illuminate \ Suport \ Fațade \ Notificare
Fata pentru a trimite notificări utilizatorilor.
Să trecem prin index
metodă a controlorului.
În cazul nostru, vom notifica utilizatorii atunci când primesc un mesaj nou. Așa că am încercat să imităm acest comportament în index
în primul rând.
Apoi, am notificat utilizatorul destinatar despre un nou mesaj folosind notifica
metoda pe $ toUser
obiect, așa cum este declarare obligatorie entitate.
$ toUser-> notificare (noul NewMessage ($ dinUser));
S-ar putea să fi observat că trecem și noi $ fromUser
obiecte în primul argument al __construi
, deoarece dorim să includem din nume de utilizator într-un mesaj.
Pe de altă parte, dacă doriți să o imitați utilizând Notificare
faade, este destul de ușor să faceți acest lucru utilizând următorul fragment.
Notificare :: trimite ($ toUser, new NewMessage ($ fromUser));
După cum puteți vedea, am folosit-o trimite
metodă a fatadei de notificare pentru a trimite o notificare unui utilizator.
Mergeți mai departe și deschideți adresa URL http: // your-laravel-site-domain / notify / index în browserul dvs. Dacă nu sunteți încă conectat (ă), veți fi redirecționat (ă) la ecranul de conectare. După ce v-ați conectat, trebuie să primiți un e-mail de notificare la adresa de e-mail atașată utilizatorului 1
.
S-ar putea să te întrebi cum detectează sistemul de notificare la
adresa dacă nu l-am configurat nicăieri. În acest caz, sistemul de notificare încearcă să găsească e-mail
proprietate în obiectul notificat. Si App \ utilizator
clasa de obiecte are deja acea proprietate deoarece folosim sistemul de autentificare implicit Laravel.
Cu toate acestea, dacă doriți să înlocuiți acest comportament și doriți să utilizați o altă proprietate decât cea de e-mail, trebuie să definiți următoarea metodă în clasa de notificare.
funcția publică funcțiaNotificationForMail () return $ this-> email_address;
Acum, sistemul de notificare ar trebui să caute adresa de email
proprietate în loc de e-mail
de proprietate pentru a prelua la
adresa.
Și așa se folosește sistemul de notificare din Laravel. Asta ne aduce și la sfârșitul acestui articol!
Ceea ce am trecut astăzi este una dintre trăsăturile utile, dar cele mai puțin discutate, în Laravel-notificări. Acesta vă permite să trimiteți notificări utilizatorilor pe canale diferite.
După o introducere rapidă, am implementat un exemplu din lumea reală care a demonstrat modul de trimitere a notificărilor prin canalul de e-mail. De fapt, este foarte util în cazul trimiterii de mesaje scurte despre modificările de stat din aplicația dvs..
Pentru cei care sunteți fie doar începători cu Laravel, fie căutați să vă extindeți cunoștințele, site-ul sau aplicația cu extensii, avem o varietate de lucruri pe care le puteți studia în piața Envato.
Dacă aveți întrebări sau sugestii, nu ezitați să le postați utilizând feed-ul de mai jos!