PHP AJAX CRUD: kreiranje, brisanje, uređivanje zapisa u MySQL bazi podataka. Prikaz poruka korisniku u web aplikacijama Izmišljena dodaj poruka php

02.04.2020 Programi

Pregled

Ugrađeni sustav obavijesti, prvi u Joomli, omogućuje vašoj aplikaciji da informira korisnika (ili grupu korisnika) o različitim događajima. Zamislite obavijesti kao važna upozorenja koja bi korisnik želio pročitati i pratiti.
Obavijesti se mogu generirati posvuda. U vašoj komponenti ili dodacima i kasnije prikazan unutar JomSocial sustava obavijesti.
Ovaj vodič će vam pokazati kako, ali budući da nemamo ideju o bilo kojoj komponenti treće strane koju bismo mogli upotrijebiti:) primjeri će se raditi na dodatku zajednice koji će se pokrenuti na događaju onAfterProfileUpdate
Ako ne znate kako izraditi dodatak koji će se pokrenuti na ovom događaju, predlažemo da pogledate ovaj vodič

Svejedno ga implementirajte u svoju komponentu

Kao što je navedeno u pregledu ovog vodiča, obavijesti ćemo generirati pomoću dodatka zajednice.
Najvjerojatnije ćete htjeti stvoriti obavijesti unutar svoje komponente ili dodatka. Sljedeći vodič će raditi u bilo kojem od ovih slučajeva. Vi samo trebate odrediti na kojoj će točki u vašem kodu biti kreirana obavijest i samo učitati datoteku JomSocial Core Libraries.

require_once JPATH_ROOT . "/components/com_community/libraries/core.php" ;

Praćenje vodiča objašnjenog u nastavku dobro će funkcionirati i za vaše proširenje

Priprema razvojnog okruženja

1. Pretpostavit ćemo da ste već stvorili primjer dodatka tipa zajednice koji će se pokrenuti kada korisnik promijeni svoj profil
Ako ne, možete preuzeti prazan primjer dodatka s , instalirati ga u Joomlu i omogućiti dodatak. Imenovan je Zajednica - Primjer obavijesti
2. Dođite do svoje baze podataka i ispraznite ove dvije tablice tako da u njima nema nikakvih zapisa

A) prefiks_obavijest_zajednice
b) prefix_community_mailq

3. Imajte najmanje dva (2) korisnika na testnim mjestima i znajte njihove ID-ove

U ranijim verzijama Joomle, korisnički ID-ovi su uvijek počinjali od navedenog broja (62, 42). U Joomli 3, ovaj broj će biti slučajan, stoga, slika našeg okruženja za testiranje jer će definitivno biti drugačija na vašem kraju.

Prva obavijest

Otvorite php datoteku dodatka koja će se nalaziti u ROOT/plugins/community/example
Unutar funkcije onAfterProfileUpdate() zamijenite

CNotificationLibrary::add ($cmd, $actor, $target, $subject, $body, $template, $params) ;

Kao što je prikazano na primjeru, API za dodavanje obavijesti ima 7 parametara

  • $cmd - je vrsta obavijesti. U ovoj datoteci možete vidjeti sve vrste obavijesti. ROOT/components/com_community/libraries/notificationtypes.php počevši od ili oko retka 53. Preporučujemo korištenje vrste obavijesti system_messaging.
  • $actor - je osoba koja provodi radnju
  • $target - je osoba ili grupa ljudi koja će primiti obavijest
  • $subject - predmet je obavijesti, iu skočnom prozoru obavijesti i u naslovu e-pošte
  • $body - tijelo je poruke obavijesti putem e-pošte
  • $template - ako trebate određeni predložak za korištenje, možete ga definirati ovdje. Inače, ovaj parametar može biti prazan
  • $params - prilagođeni definirani parametri
  • Znajući sve ovo, definirajmo varijable koje ćemo koristiti
    Promijenite kôd dodatka u:

    $korisnik = CFactory::getUser(); $cmd = "system_messaging" ; // prvi parametar, tip aktivnosti $actor = $user -> id ; //drugi parametar - dohvati id od $actor $target = "965" ; // treći param. Tko prima obavijest? U našem razvojnom okruženju, njegov administratorski korisnik s ID-om 965. U vašem okruženju najvjerojatnije ćete htjeti dobiti ID od svog objekta ili od niza korisnika. $subject = "Predmet obavijesti" ; // Predmet obje obavijesti, e-pošte i skočnih obavijesti $body = ; //Tijelo poruke u e-pošti. $template = "" ; // Ako trebate koristiti određenu jomsocial datoteku predloška, ​​možete je definirati ovdje. $params = novi CParametar("" ) ; // Želimo stvoriti dodatni params objekt i dodijeliti mu podatke, bez potrebe za formalnim definiranjem klase CNotificationLibrary:: add ($cmd, $actor, $target, $subject, $body, $template, $params) ;

    Sada se prijavite s bilo kojim korisnikom i promijenite podatke o profilu. Idemo u bazu podataka da vidimo što se dogodilo.
    Dođite do tablice prefix_community_notifications i promatrajte Novi snimiti

    Dođite do tablice prefix_community_mailq i pogledajte novi zapis

    Čestitamo! - Uspješno ste izradili svoju prvu vlastitu obavijest koja je poslana e-poštom i internim JomSocial sustavom obavijesti


    Potencijalno povećanje koda

    Gornji primjer je u redu i radi, ali općenito se ne preporučuje takva upotreba. Umjesto toga, moglo bi se napisati ovako

    $actor = CFactory::getUser(); $params = novi CParametar("" ) ; CNotificationLibrary:: add ( "system_messaging", $actor -> "Ovo je poruka tijela obavijesti" , "", $params) ;

    Ovo je puno čišće i lakše ga je pratiti, dok u osnovi radi apsolutno istu stvar kao kod prikazan gore.

    Prilagođeni parametri obavijesti

    API za obavijesti može se proširiti bilo kojim parametrom koji želite dodati.
    Ovi se parametri mogu proslijediti u predložak e-pošte, obavijest i, naravno, jezičnu datoteku.

    $actor = CFactory::getUser(); $link = "http://www.google.com" ; $params = novi CParametar("" ) ; $params -> set ("actor" , $actor -> getDisplayName () ) ; // može se koristiti kao (actor) oznaka $params -> set ("actor_url" , "index.php?option=com_community&view=profile&userid=" . $actor -> id ) ; // Link za oznaku (actor) $params -> set ("url", $link) ; //url cijele aktivnosti. Koristi se kada lebdite iznad avatara u prozoru obavijesti. Može se koristiti i kao (url) oznaka u odlaznim porukama e-pošte. Provjerite jeste li definirali $link varijablu:) CNotificationLibrary:: add ( "system_messaging", $actor -> id, "965" , "Notification Subject" , "This is the notification body message" , "" , $params ) ;

    • $params = novi CParametar( ); - Želimo stvoriti novi params objekt i dodijeliti mu podatke, a da ne moramo formalno definirati klasu.
    • $params->set("glumac", $actor->getDisplayName()); - Vaša bi obavijest uvijek trebala imati aktera. Ovaj se parametar može proslijediti predlošku kao oznaka (glumac). U prozoru obavijesti definira korisnika koji nosi akciju.
    • $params->set("actor_url", "index.php?option=com_community&view=profile&userid=" . $actor->id); - URL glumca obično je url glumca. U skočnom prozoru obavijesti dodaje vezu na element (glumac).
    • $params->set("url", $link); - Ovo je najvažniji parametar koji uvijek morate ispravno postaviti. U prozoru obavijesti ovaj se parametar koristi preko slike avatara. U obavijestima putem e-pošte ponavlja se lokacija na kojoj se aktivnost dogodila.

    Za ovaj primjer, postavit ćemo varijablu $link na zemlju www.google.com pa da vidite kako radi

    Dodavanje jezičnog niza i parametara upotrebe

    Parametri koje smo upravo postavili dostupni su i za korištenje u našim jezičnim datotekama.
    Definirajmo jezične ključeve izmjenom " CNotificationLibrary::add() API

    CNotificationLibrary::add("system_messaging" , $actor -> id , "965" , JText::sprintf("PLG_COMMUNITY_EXAMPLE_SUBJECT") , JText::sprintf("PLG_COMMUNITY_EXAMPLE_BODY" ) , "" , $params ) ;

    Jezična datoteka bi trebala izgledati ovako

    PLG_COMMUNITY_EXAMPLE_SUBJECT = "(glumac) je ažurirao profil" PLG_COMMUNITY_EXAMPLE_BODY = "Bok administratore \n Ovo je poruka e-pošte kojom vas obavještavamo da je (glumac) ažurirao profil \n\n Ako želite ići na Google, kliknite ovdje \n a href=" _QQ_" (url)"_QQ_">(url)"

    U ovom smo primjeru upotrijebili oznaku (actor) i (url) za prosljeđivanje podataka i predlošcima obavijesti i e-pošte. Da vidimo kako to izgleda.
    U prozoru s obavijestima kada lebdite iznad avatara, primijetite da se aktivira (url) parametar i dodaje vezu na Google preko avatara. Namjerno, jer smo mi tako napravili :)


    ]

    U istom prozoru, kada lebdite iznad veze glumca. Ovo je dio gdje je (actor) ponovio korisnika koji nosi radnju, dok je (actor_url)" pazio da je objekt pravilno povezan


    Pogledajmo što se događa u redu čekanja e-pošte


    I na kraju, stvarna e-pošta koja se šalje krajnjem korisniku


    Uspjeh
    Do sada smo izradili tri (3) parametra koji se uspješno koriste u prozoru obavijesti i e-porukama.

  • (glumac) - Vraća korisničko ime korisnika koji nosi radnju
  • (actor_url) - Daje atribut (glumcu)
  • (url) - Nije obavezno, ali biste ga uvijek trebali imati u svojoj obavijesti. To je glavni url gdje se dogodila radnja o kojoj smo obaviješteni.
  • Slično, možete definirati "

    • (cilja) - ako vam treba
    • (target_url) ako ga trebate u svojoj obavijesti.
    • (naslov) - Obično se koristi za označavanje objekta koji je generirao obavijest. Primjer: "Korisnik X objavio je novu fotografiju u albumu Y." Ovdje je naslov albuma Y
    • (title_url) - Kao i kod prethodnih, url objekta koji je generirao obavijest.
    • (poruka) - Ovaj parametar se može koristiti za postavljanje (i ponavljanje) poruke u tijelu JomSocial e-pošte.
    3.3K

    Prikazivanje poruka korisniku prilično je uobičajena radnja koju web aplikacija treba izvesti. Može se dogoditi prilikom obrade obrazaca, mogu biti poruke o pogrešci, poruke koje vam govore da se registrirate kada korisnik pokuša pristupiti ograničenom dijelu stranice, te u mnogim drugim slučajevima.

    Vrlo često, stvaranje i izlaz poruka su odvojeni u različite HTTP zahtjeve. U pravilu je prikladno koristiti preusmjeravanje nakon obrade obrazaca (kako bi se izbjegli problemi s gumbima Natrag i Osvježi), ali u isto vrijeme prirodni trenutak za stvaranje poruke je upravo trenutak obrade obrazaca i izvođenja radnji koje prate to. Zašto? Zamislite da bi tekst poruke trebao izgledati otprilike ovako: "Broj naručenih jedinica za proizvod 'Podloga za miša' uspješno je promijenjen sa 7 na 12." Nakon preusmjeravanja, možda na potpuno drugu stranicu u smislu funkcionalnosti, bit će dodatna glavobolja utvrđivati ​​što je prije napravljeno.

    Najčešće se poruke prikazuju u POST zahtjevu koji obrađuje obrazac - to nije dobro, riječi "ova stranica je zastarjela" uništavaju život (kada korisnik odluči isprobati gumb Natrag).

    Netko koristi preusmjeravanje, odustajući od prijateljskih poruka.

    U isto vrijeme, postoji jednostavan i očit način da život učinite boljim. Unatoč očitosti, iz nekog razloga nikada nisam vidio da ga netko koristi - barem kad sam pogledao izvore drugih ljudi.

    Dakle, imamo problem - poruka mora "živjeti" u različitim zahtjevima. Trebamo mehanizam za prijenos teksta poruke na stranicu koja bi je trebala prikazati. Vjerojatno ste se već sjetili seansi.

    Da, općenito ste u pravu. Druge metode, na primjer putem globalne varijable, ne dopuštaju spremanje podataka u slučaju kada se koristi preusmjeravanje (napomena Maxima Naumenka). Osim toga, obično pazim da svaki zaslon u aplikaciji ima mogućnost, zajedno s ostalim informacijama, prikazati poruke koje su generirane na prethodnim zaslonima. Ovo je zgodno jer nema potrebe pripremati zasebne ekrane za prikaz poruka, a korisnik ne mora ponovno klikati mišem. Ali, zapravo, dizajner tu mora razmisliti - istaknuti područje u kojem će se pojaviti poruke.

    Ideja je vrlo jednostavna i može se implementirati s nekoliko razreda.

    Prvo što pada na pamet je kreirati klasu Poruka, koja bi zapravo predstavljala poruku u našem jednostavnom dijagramu klasa. Poruka se mora moći spremiti u sesiji, kao i prikazati na ekranu.

    klasa Poruka ( /** * Sadržaj poruke. */ var $content; /** * Konstruktor za inicijalizaciju teksta poruke. * * @param content sadržaj poruke */ funkcija Poruka($sadržaj) ( $this->content = $ sadržaj ; ) /** * Napišite poruku sesiji. */ funkcija send() ( $_SESSION["session_messages"] = $this->content; ) /** * Pošaljite poruku stranici. */ funkcija toPage() ( echo " - " . $this->content . "
    "; } }

    Varijabla $_SESSION koristi se za pristup sesiji.

    Imajte na umu da je $_SESSION niz, mi koristimo samo jedan element ovog niza s indeksom 'session_message'.

    U ovom slučaju imamo posla s “nizom nizova” - ono što pohranjujemo u element ‘session_message’ je niz, to je popis odaslanih poruka (naravno, može ih biti više).

    Ako niste mogli pronaći temu, vrijeme je da osvježite dijelove priručnika posvećene sesijama i nizovima.

    Možda imate pitanje. Zašto je ovdje potrebna nastava? Moglo bi se snaći s dvije funkcije. Ali pogledajmo dalje. Možda ćemo trebati izraditi poruke s različitim vrstama (info, pogreška, upozorenje) i odrediti primatelje poruka.

    Imajte na umu da trenutno nije sam objekt taj koji se stavlja u sesiju, već samo tekst poruke. OOP nam omogućuje da kasnije promijenimo ponašanje send() metode bez mijenjanja koda klijenta koji pristupa ovoj metodi (na primjer, u budućnosti možemo napisati cijeli objekt poruke u sesiju ako ima mnogo polja).

    Zamislimo da bismo to učinili pomoću funkcija. Vjerojatno bismo imali funkciju message_send($txt), a također i funkciju message_to_page($txt). Sada moramo dodati mogućnost različitog ponašanja za različite vrste poruka. Pozivi funkcija se mijenjaju: message_send($txt, $kind), message_to_page($txt, $kind). Morat ćete pročešljati cijeli kod aplikacije u potrazi za takvim funkcijama, unoseći ispravke.

    To se može izbjeći predviđanjem situacije unaprijed predstavljanjem poruke kao asocijativnog niza: $msg[‘txt’], $msg[‘vrsta’], tada će postojati samo jedan parametar u pozivima funkcije. Osjećate li kako ovo pokušava postati klasa?

    Dakle, OOP vam daje priliku da imate luksuz da ne razmišljate o svemu unaprijed.

    Sljedeća klasa - Inbox - dizajnirana je upravo za to.

    class Inbox ( /** * Niz primljenih poruka. */ var $messages = array(); /** * U konstruktoru dobivamo sve primljene poruke * i brišemo ih iz sesije. */ function Inbox() ( if (is_array($ _SESSION["session_messages"])) ( $messages = $_SESSION["session_messages"]; $co = sizeof($messages); for ($i = 0; $i< $co; $i++) { $this->poruke = nova poruka($messages[$i]); ) ) /* brisanje niza poruka */ $_SESSION["session_messages"] = array(); ) /** * Prikažite sadržaj Inboxa na stranici. */ function toPage() ( $co = sizeof($this->messages); if ($co > 0) ( echo "Poruka iz sustava:
    "; ) za ($i = 0; $i< $co; $i++) { $this->poruke[$i]->Na stranicu(); ) ) )

    Isprobajmo naš sustav slanja poruka.

    Kreirajmo vrlo jednostavan primjer koji će odgovoriti na podnošenje obrasca izvješćivanjem o broju sekundi u trenutnoj minuti.

    Sakrili smo sav rad s nizovima i sesijama unutar klasa, a konačni kod izgleda jednostavno i lijepo.

    Napravite direktorij na svom web poslužitelju, zatim stvorite ove tri datoteke u njemu i isprobajte skriptu. Napominjemo da nema problema s gumbima Natrag i Osvježi.

    Sada zamislite da stvarate složen portal, gdje u pravilu postoji nekoliko blokova na stranicama, a svaki može sadržavati zasebnu aplikaciju.

    Ovdje nailazimo na dvije poteškoće:

    * Želio bih da se popis poruka pojavi na određenom dijelu stranice, a vi ste već pronašli dobro mjesto za to.
    Problem je što morate pokrenuti naredbu $inbox->toPage() točno u trenutku koji bi odgovarao poziciji liste poruka na stranici. Ako želimo promijeniti poziciju ove liste, morat ćemo ući u kod, ali nije dobro stalno mijenjati okvir portala za to. Najbolje rješenje bi bilo napraviti izlaz poruka u obliku zasebnog modula, za koji znamo samo da ga treba spojiti na okvir.
    Odnosno, oslobodite se strogog slijeda pokretanja modula. Doista, budući da rezultat ispisa Inboxa ne ovisi o radu sustava (u ovom koraku već imamo sve podatke u sesiji), čemu onda dodatna složenost?
    * Da biste održali izgled (dizajn) popisa poruka, morate voditi računa o HTML kodu, koji je tvrdo kodiran u metodama toPage() klasa Poruka i Inbox. Obično ćete morati promijeniti PHP kôd kako biste promijenili dizajn.

    Da biste pokušali riješiti prvi problem, možete stvoriti međuspremnik koji pohranjuje rezultat izlaza Inboxa.

    Možda ćemo još imati nekoliko sličnih (kao Inbox) stvari, a moramo napraviti međuspremnik. Da ne bude zabune čiji je čiji izlaz, vjerojatno ćemo doći do imenovanja međuspremnika. Negdje ćemo pohraniti redoslijed u skladu s kojim međuspremnici trebaju biti ispisani - po mogućnosti u vanjskoj datoteci radi lakšeg mijenjanja.

    Ovaj pokušaj rješenja već nam daje ideju o korištenju XML-a kao sredstva za pohranjivanje posrednih podataka. A korištenje XSLT stilova pomoći će u rješavanju drugog problema.

    Neću se zadržavati na tome što je XML, a što XSLT. Ako niste upoznati s tim stvarima, zvon.org je dobro mjesto za početak traženja.

    Ideja nije generirati HTML kod, već XML strukturu u metodama toPage(). Dokument stranice bit će kreiran kao string s XML kodom (služit će kao “buffer”), au posljednjoj fazi skripte koristit ćemo XSL transformaciju.

    Prvo, zamislimo što bi trebao biti rezultat glavnog dijela koda.

    minuta 57 sekundi: 45

    O čemu se radi lako je pogoditi - dvije poruke i obrazac. Imajte na umu da PHP skripta treba samo pripremiti takav niz - to je vrlo jednostavno. Štoviše, redoslijed glavnih oznaka nije važan - možete ih staviti na početak, na primjer, kako će programeru biti zgodno. Kako to implementirati. Možete, bez promjene bilo čega, koristiti izlazni međuspremnik, ispisati XML umjesto HTML koda i na kraju jednostavno uhvatiti izlaz u string. Ali tada ćemo izgubiti fleksibilnost - na primjer, ponekad želite ispisati informacije o otklanjanju pogrešaka izravno na stranicu (pomoću jeke). U isto vrijeme, PHP programeri rade na DOM modulu koji nudi napredniji način stvaranja i prosljeđivanja dokumenata stabla. Ako želimo implementirati DOM, morat ćemo redizajnirati cijelu aplikaciju, mijenjajući izlaz nizova u stvaranje DOM elemenata. Stoga radije pohranjujem XML reprezentaciju objekata unutar samih objekata, uzastopno sastavljajući zajednički XML dokument. Nije tako teško, samo treba malo modificirati. Vidjet ćete da ova tehnika nije striktno vezana za određeni način pohranjivanja XML podataka, a to će vam omogućiti prijelaz na korištenje DOM-a uz malo truda. Prije svega, primijetite da svaki od naših objekata ima metodu toPage(). Ova sličnost bi nas trebala navesti na razmišljanje o uvođenju nove zajedničke roditeljske klase. Neka svaka klasa koja može stvoriti dijelove XML dokumenta za stranicu naslijedi od klase koja će se pobrinuti za XML reprezentaciju objekta. Nazovimo ga Outputable.

    class Outputable ( /** * XML spremnik (niz). */ var $output = ""; /** * Daj sadržaj spremnika i očisti spremnik. * * @vrati niz s XML podacima */ funkcija getOutput () ( $ out = $this->output; $this->output = ""; return $out; ) /** * Dodajte dio sadržaju spremnika. * * @param string niz za dodavanje * / funkcija appendOutput($string) ( $this ->output .= $string . "n"; ) /** * "Abstract" metoda. */ funkcija toPage() ( ) )

    Metoda toPage() je prazna - u ovom slučaju je potrebna kao pokazatelj kako bi vanjske klase "matrjoške" trebale komunicirati s unutarnjom klasom. Međutim, ovdje bismo mogli ponuditi zadanu implementaciju ako bismo primijetili da postoji mnogo objekata koji se na stranici prikazuju na isti način.

    Klase Message i Inbox malo će se promijeniti - sada bi obje trebale naslijediti Outputable, a također će se promijeniti metode toPage().
    Poruka.php

    class Message extends Outputable ( /** * Sadržaj poruke. */ var $content; /** * Konstruktor za inicijalizaciju teksta poruke. * * @param content sadržaj poruke */ funkcija Poruka($sadržaj) ( $this->content = $content; ) /** * Napišite poruku sesiji. */ function send() ( $_SESSION["session_messages"] = $this->content; ) /** * Pošaljite poruku stranici. * / funkcija toPage() ( $this->appendOutput("".$this->content.""); ) )

    class Inbox extends Outputable ( /** * Niz primljenih poruka. */ var $messages = array(); /** * U konstruktoru primamo sve primljene poruke * i uklanjamo ih iz sesije. */ function Inbox( ) ( if (is_array ($_SESSION["session_messages"])) ( $messages = $_SESSION["session_messages"]; $co = sizeof($messages); for ($i = 0; $i< $co; $i++) { $this->poruke = nova poruka($messages[$i]); ) ) /* brisanje niza poruka */ $_SESSION["session_messages"] = array(); ) /** * Prikažite sadržaj Inboxa na stranici. */ funkcija toPage() ( $co = sizeof($this->messages); $this->appendOutput(""); for ($i = 0; $i< $co; $i++) { $this->poruke[$i]->toPage(); $this->appendOutput($this->messages[$i]->getOutput()); ) $this->appendOutput(""); ) )

    Metoda ispisa je promijenjena - sada, umjesto izravnog ispisa na stranicu, vanjski prikaz se trenutno pohranjuje u Outputable, koji se "nalazi" u svakom od objekata. Metoda appendOutput() služi kao zamjena za konstrukciju echo(). Za dobivanje izlaza objekta koristi se metoda getOutput().

    Sada da vidimo što je klijentski dio koda, koji će riješiti isti problem kao i prije.
    indeks.php

    Glavna inovacija je u $global_content objektu, čije ime govori samo za sebe. U ovom slučaju pripada klasi Outputable; u stvarnim zadacima vjerojatno biste stvorili zasebnu klasu za sadržaj stranice.

    Ako bolje pogledate, sadržaj skripte se praktički nije promijenio - isti inbox, isti toPage(). Dodana je uputa koja prikazuje sadržaj popisa poruka u sadržaju stranice. Radi raznolikosti, sada se generiraju dvije poruke.

    Kako bismo vidjeli rezultat, preostaje samo pripremiti XSL predložak.
    stil.xsl

    XSLT primjer

    poruka

    Što smo postigli?

    Prije svega, možete s više samopouzdanja preuzeti složene projekte - osigurana je stvarna neovisnost modula. Redoslijed kojim se rezultati postavljaju na stranicu sada se kontrolira pomoću vanjskog XSL predloška i ne ovisi o redoslijedu kojim se moduli pokreću.

    Svaki modul koji kao rezultat svog rada generira XML podatke može se koristiti u projektu. Usput, to je jedna od prednosti u odnosu na predloške, kod kojih se stvaranje podataka sastoji od slijeda pozivanja metoda (assign, itd.) određenog motora, za koje ne postoji zajednički standard.

    Još jedna prednost je lakoća otklanjanja pogrešaka. Ako pokrenete skriptu, primijetit ćete da svaka stranica sadrži izlaz za ispravljanje pogrešaka - XML ​​prototip koji uvelike pojednostavljuje aplikacije za ispravljanje pogrešaka.

    Još nešto o čemu trebate razmišljati je kako stvoriti objekte poruka. Nije uvijek zgodno koristiti new izravno u kodu klijenta. Ali možda je ovo tema za poseban članak.

    Na kraju, galop o izgledima:

    * skočni prozori za popis važnih poruka
    * "stranice pošiljatelja" i "odredišne ​​stranice" u porukama
    * evidentiranje poruka u bazi podataka
    * gumb "prikaži povijest mojih radnji"
    * statistička analiza radnji korisnika unutar sesija
    * "inteligentni pomoćnici" u web aplikacijama

    U ovoj točki ovog tečaja postavljeni su temelji našeg dodatka, definirana je prilagođena kuka i priložena je trajna poruka koja pokazuje kako kuka radi.

    Da mi Ne učinili, nisu implementirali vrste poruka i njihov prikaz prema podacima koje korisnik unese.

    Ali prije nego što počnemo, moramo dodati podršku za različite vrste poruka, sučelje klase koje će podržavati svaku vrstu poruke i strukturu podataka potrebnu za pohranu takvih poruka.

    Jeste li spremni za početak?

    Radujem se nastavku vodiča, ali postoji nekoliko stvari koje moramo razmotriti prije nego što naglavačke zaronimo u izvorni kod. Provjerite imate li sljedeći softver instaliran na vašem sustavu:

    • PHP 5.6.25 i MySQL 5.6.28
    • Apache ili Nginx
    • WordPress 4.6.1
    • Vaš preferirani IDE ili editor

    A ako tražite sveobuhvatno rješenje, ne zaboravite isprobati MAMP.

    Napredovali smo do

    Kao što je ranije spomenuto, točno smo u sredini ovog tečaja. Ako ste propustili neku od prvih lekcija, evo što smo do sada obradili:

  • U prvom vodiču usredotočili smo se na minimalne osnove za izradu našeg dodatka i ono što trebate imati da biste započeli.
  • U drugom dijelu krenuli smo dalje s dodatkom, malo dodajući osnovnu administrativnu stranicu u WordPressu. Također smo dodijelili prilagođenu kuku koju koristimo i pokrenuli je na strani poslužitelja. Također postavljamo osnovne parametre za naš Settings Messenger.
  • A ovo ćemo razmotriti u završnoj fazi obuke:

  • Sve ćemo to povezati, vidjeti na djelu i učiniti dodatak javno dostupnim za preuzimanje.
  • Trenutačno imamo druge zadatke i na njih ćemo se fokusirati.

    Vratimo se poslu

    Budući da smo se okrenuli radu (a kako je navedeno u prethodnim lekcijama), predani smo daljnjoj realizaciji zadataka u ovom dijelu:

    U ovom vodiču nastavit ćemo razvijati naš Settings Messenger dodavanjem podrške za poruke o uspjehu i neuspjehu, kao i doticanjem sigurnosnih pitanja.

    U prethodnom smo članku započeli s Settings Messengerom, ali samo do točke postavljanja značajke koja će neprestano prikazivati ​​obavijest o uspjehu dok se korisnička stranica učitava.

    U ovom vodiču ćemo dodati podršku za poruke o grešci, upozorenju i uspjehu. Zatim ćemo ih prikazati na ekranu kako bismo dobili ideju o tome kako će glasnik raditi.

    Dodatno, napravit ćemo još jednu promjenu koja će dodati podršku za odbacivanje obavijesti prema nahođenju korisnika.

    Ovo je cijeli plan potrebnog rada za ovu lekciju. Počnimo.

    Postavke Messenger proširenje

    Upamtite, cijela poanta Settings Messengera je definirati naš način rada s prilagođenim porukama, prilagođenim kukicama i izvornim WordPress API-jem za prikazivanje poruka u kontekstu WordPress administratorske ploče.

    Da bismo to učinili, proširit ćemo posao obavljen u prošloj lekciji i krenuti odavde.

    Uspješne poruke

    Budući da smo u prethodnoj lekciji započeli s uspješnim porukama, nastavimo s njima. Sada imamo tvrdo kodiranu metodu koja prikazuje jednu tehniku: