Parametri formata Modx revo. Obrazac za povratne informacije o MODX Revo koristeći Formit s neobičnom captcha. Što je FormIt

21.06.2020 Savjet

FormIt 3.0 uvodi ažuriranje metoda enkripcije koje se koriste za šifriranje podnošenja obrasca. Prije 3.0 korišten je mcrypt, koji je u 3.0 zamijenjen s openssl, zbog toga što je mcrypt zastario od PHP 7.2. FormIt 3.0 dolazi sa stranicom za migraciju kojoj se može pristupiti iz upravitelja.

Od FormIt 2.2.9, sva će polja automatski imati primijenjene html_entitete. Kako biste omogućili spremanje/pohranu HTML oznaka, morat ćete koristiti validator allowSpecialChars na svakom polju, koji bi trebao spremati neobrađene html oznake.

Od FormIt 1.1.4, sva će polja automatski imati stripTagove. Kako biste omogućili spremanje/pohranjivanje HTML oznaka, morat ćete koristiti validator allowTags na svakom polju, određujući koje su oznake dopuštene.

Kako koristiti

Jednostavno postavite poziv FormIt isječka u Resurs koji sadrži obrazac koji želite koristiti. Za razliku od sličnih prethodnika (najviše eForm u MODX Evolution), ne stavljate obrazac u Chunk i ne referencirate Chunk u FormIt pozivu isječka: doslovno stavljate poziv isječka uz obrazac koji želite da obradi. Odredite "kuke" (ili skripte za obradu nakon provjere) u pozivu isječka. Zatim dodajte potvrdu putem &potvrdi i &customValidators parametri u oznaci isječka.

Ako imate više obrazaca na stranici, postavite &podnesiVar svojstvo na vašem Isječku poziva na naziv elementa obrasca unutar obrasca (tj. &submitVar=`form1-submit`). Ovo govori FormIt-u da obrađuje samo zahtjeve obrasca s tom POST varijablom. Trebalo bi koristiti više obrazaca s INPUT type="submit" name="form1-submit", elementi gumba prijavljeni su da ne rade.

Dostupna svojstva

Ovo su dostupna opća svojstva za FormIt poziv (ne uključujući svojstva specifična za kuku):

Ime Opis Zadana vrijednost
preHooks Koje skripte aktivirati, ako ih ima, nakon što se obrazac učita. Ovo može biti popis kuka odvojenih zarezima, a ako prva ne uspije, one koje slijede neće se aktivirati. Hook također može biti naziv isječka koji će izvršiti taj isječak.
renderHooks Koje skripte pokrenuti, ako ih ima, nakon što se obrazac učita, preHookovi su gotovi i sva polja i pogreške su postavljene. Ovo može biti popis odvojen zarezima koji se koristi za manipuliranje svim poljima obrasca prije nego što se sve postavi na temelju danih podataka iz drugih paketa ili preHookova. Hook također može biti naziv isječka koji će izvršiti taj isječak.
udice Koje skripte aktivirati, ako ih ima, nakon što obrazac prođe provjeru valjanosti. Ovo može biti popis odijeljen zarezima, a ako prvi ne uspije, naredni se neće pokrenuti. Hook također može biti naziv isječka koji će izvršiti taj isječak.
submitVar Ako je postavljeno, neće započeti obrada obrasca ako se ova POST varijabla ne proslijedi. Napomena: potrebno ako koristite &store svojstvo (+ postavite submit var u input="submit"!).
potvrditi Popis polja za provjeru odvojenih zarezima, sa svakim nazivom polja kao name:validator (npr.: korisničko ime:obavezno,e-pošta:obavezno). Validatori također mogu biti lančani, poput email:email:required. Ovo se svojstvo može navesti u više redaka.
validationErrorMessage Opća poruka o pogrešci koja se postavlja na rezervirano mjesto [[!+fi.validation_error_message]] ako provjera valjanosti ne uspije. Može sadržavati [[+greške]] ako želite prikazati popis svih grešaka na vrhu. Došlo je do pogreške pri provjeri valjanosti obrasca. Provjerite vrijednosti koje ste unijeli.
validationErrorBulkTpl HTML tpl koji se koristi za svaku pojedinačnu pogrešku u generičkoj vrijednosti poruke o pogrešci valjanosti. [[+greška]]
pogreškaTpl Omotač html za poruke o grešci. Napomena: ne dio, samo čisti HTML. [[+greška]]
customValidators Popis prilagođenih naziva validatora (isječaka) odvojenih zarezima koje planirate koristiti u ovom obrascu. Moraju biti izričito navedeni ovdje ili se neće pokrenuti.
clearFieldsOnSuccess Ako je istina, obrisati će polja na uspješnom slanju obrasca koji ne preusmjerava. 1
trgovina Ako je istina, pohranit će podatke u predmemoriju za dohvaćanje pomoću isječka FormItRetriever. 0
storeTime Ako je "pohrana" postavljena na istinito, ovo određuje broj sekundi za pohranjivanje podataka iz slanja obrasca. Zadano je pet minuta. 300
storeLocation Kada koristite pohranu, ovo definira gdje se obrazac pohranjuje nakon podnošenja. Moguće opcije su "cache" i "session". Zadana postavka je "cache". predmemorija
placeholderPrefix Prefiks koji se koristi za sva rezervirana mjesta koja postavlja FormIt za polja. Obavezno uključite "." separator u vašem prefiksu. fi.
uspjehPoruka Ako ne koristite kuku za preusmjeravanje, prikažite ovu poruku o uspjehu nakon uspješnog podnošenja.
successMessagePlaceholder Naziv rezerviranog mjesta za postavljanje poruke o uspjehu. fi.successMessage
preusmjeritiNa ID stranice stranice "Hvala" na koju se posjetitelj može poslati nakon uspješnog slanja obrasca, ali ovaj se parametar čita SAMO ako uključite "preusmjeravanje" na popisu &priključaka.
dopustiDatoteke Navedite je li dopušteno objavljivanje datoteka. Podnesene datoteke pohranjuju se u privremeni direktorij kako bi se spriječilo da se datoteke izgube u obrascima s više koraka. pravi
priloži datoteke e-pošti Prilaže učitane datoteke u e-poštu, obrazac treba postaviti kao enctype="multipart/form-data" pravi

Validacija

Provjera valjanosti u FormIt-u obavlja se putem svojstva &validate i može se koristiti za automatsku provjeru valjanosti bilo kojeg polja u vašem obrascu.

Za više informacija o provjeri valjanosti u FormIt-u, pogledajte

Ostala nam je još samo jedna stranica koju još nismo uredili. Ovo je stranica Kontakti. Ovdje imamo pored kontakt informacije obrazac će se nalaziti Povratne informacije. U MODx-u postoji poseban isječak za izradu takvog obrasca - eForm. Prvo pogledajmo od čega se obrazac za povratne informacije može sastojati.

1. Prije svega, ovo je sama forma s poljima za unos Ime, poštanska adresa, Teme poruka i sebe samog Poruke. Za zaštitu od spama trebali biste dodati captcha - obrazac za unos koda iz generirane slike. Također je potrebno omogućiti provjeru točnosti unesenih podataka.

2. Obavještavanje posjetitelja o slanju poruke.

3. Obrazac poslane poruke koja će biti poslana e-poštom.

Stvorite dio s predloškom obrasca za povratne informacije

Prije stvaranja dijela s predloškom za obrazac za povratne informacije, proučimo kôd koji opisuje ovaj obrazac u našem predlošku. Otvorite datoteku u Notepad++ kontakt.html koji se nalazi u mapi C:/xampp/htdocs/site/www/assets/templates/templatemo_250_chess/. Ovo će biti linije sa 135 Po 159 uključivo. Kao što vidite, ovo je spremnik sa id="kontaktni_obrazac", gdje se nalazi naš obrazac. Koristeći ovaj kod kao osnovu, stvaramo novi komad oblik-tpl i dodajte rezervirana mjesta koja su nam potrebna:

Povratne informacije


[+poruka o potvrdi+]



E-mail:e-pošta:1" />




Unesite ovaj kod:





Gdje [+poruka o potvrdi+]- odgovoran je za prikaz poruka o pogrešci prilikom slanja obrasca.
radnja="[~[*id*]~]- označava da će rukovatelj obrascima biti stranica na kojoj se poziva isječak. Umjesto [~[*id*]~] MODx će zamijeniti URL trenutnog dokumenta.
navodi ID obrasca koji ćemo navesti prilikom pozivanja isječka.
pristupni ključ oznake- postavlja pristup elementima obrasca pomoću prečaca.
eform="E-pošta:e-pošta:1"- opisuje polje za unos poštanska adresa, označava vrstu podatka koji se upisuje i čini ovo polje obaveznim. Općenito, predložak za ispunjavanje ovog parametra je sljedeći: eform="[opis polja]:[vrsta ulaznih podataka]:[je li polje potrebno]:[unosna poruka o pogrešci]:[pravilo provjere unosa]" . Ali trebamo samo tri vrijednosti. Slično ovom parametru, popunjava se eform="Name::1".
[+verimageurl+] odgovoran je za prikaz captcha.

Napravite dio koji obavještava posjetitelja da je poruka poslana

Stvaranje dijela hvala-tpl

Hvala što koristite obrazac za povratne informacije na našoj web stranici.

Vaša poruka će biti pregledana u najkraćem mogućem roku, a ukoliko bude zahtijevala odgovor, sigurno ćete ga dobiti.


Poslane informacije:



  • Tvoje ime:[+autor+]

  • Tvoj email:[+e-pošta+]

  • Tekst poruke:[+tekst+]

Stvorite dio s obrascem poslane poruke

Stvaranje dijela izvješće-tpl i postavite sljedeći kod u njegov sadržaj:

Ovu poruku poslao je posjetitelj pod imenom [+autor+] koristeći obrazac za povratne informacije.






Ime:[+autor+]
Email::[+e-pošta+]
Poruka:[+tekst+]

U ovom bloku, kao iu prethodnom, sve informacije koje je korisnik unio prenose se pomoću rezerviranih mjesta u obliku [+autor+]. U ovom slučaju, naziv svakog rezerviranog mjesta podudara se s vrijednošću atributa "name" odgovarajućeg polja u dijelu s obrascem za povratne informacije (name="author", name="email" name="text").

Stvorite dio s pozivom na obrazac za povratne informacije

Stvorite komad s imenom oblik i stavite strukturu tamo:

[!eForm? &formid=`Pošalji` &tpl=`form-tpl` &to=` [e-mail zaštićen],[e-mail zaštićen],[e-mail zaštićen]` &mailselector=`otdel` &report=`report-tpl` &thankyou=`thank-tpl` &vericode=`1` &subject=`Poruka s moje web stranice`!]

Gdje &formid=`Pošalji`- identifikator obrasca, koji smo naveli u form-tpl komadu
&tpl=`form-tpl`- predložak za obrazac za povratne informacije
&to=` [e-mail zaštićen],[e-mail zaštićen],[e-mail zaštićen]` - Email adresa za slanje informacija
&mailselector=`otdel`- postavlja polje obrasca koje će se koristiti pri odabiru jedne adrese s popisa adresa odvojenih zarezom (,) u parametru &do. U našem slučaju, ovo je padajući popis

Kao rezultat toga, ovaj će dio sadržavati sljedeći HTML kod:

Generiranje koda koji sadrži poziv isječka AjaxForm

Otvaramo predložak koji će koristiti resurs i upisujemo kod koji će sve to implementirati.

[[!AjaxForm? &form=`tpl.AjaxForm` &snippet=`FormIt` &hooks=`FormItSaveForm,email` &emailSubject=`Testna poruka` &emailTo=` [e-mail zaštićen]` &emailFrom=` [e-mail zaštićen]` &emailTpl=`tpl.email` &validate=`name:minLength=^2^,email:email:required,message:minLength=^10^` &validationErrorMessage=`Obrazac sadrži greške!` &successMessage=`Poruka je uspješno poslana` ] ]

Pogledajmo glavne parametre:

  • &forma – odgovorna je za chunk koji sadrži formu (tpl.AjaxForm).
  • &nippet - isječak koji obrađuje obrazac (FormIt).
  • &hooks – zakačke koje će FormIt isječak izvršiti nakon uspješne provjere valjanosti obrasca (1 - FormItSaveForm, 2 - e-pošta). Zakačke su skripte koje se pokreću nakon što obrazac prođe provjeru valjanosti. Navedeni su odvojeni zarezima i pokreću se jedan za drugim. Ako se dogodi greška u jednom od njih, ostali se ne pokreću. U ovom vodiču koristit ćemo 2 kuke. FormItSaveForm kuka dizajnirana je za spremanje obrasca u bazu podataka. Priključak za e-poštu dizajniran je za slanje podataka obrasca putem e-pošte.
  • &emailSubject, &emailTo, &emailFrom, &emailTpl – parametri čije vrijednosti koristi kuka za e-poštu. Namijenjeni su označavanju predmeta pisma (&emailSubject), adrese slanja (&emailTo), zaglavlja From (&emailFrom) i predloška pisma (&emailTpl).
  • &validate – parametar na temelju čije se vrijednosti validira obrazac. Vrijednost parametra je popis elemenata odvojenih zarezima. Svaki element sastoji se od naziva elementa obrasca (koji je potrebno označiti) i pravila (zahtjeva za njega), odvojenih dvotočkom. Na primjer, validator name:minLength=^2^ provjerava sadrži li polje imena najmanje 2 znaka. Validator email:email:required provjerava sadrži li polje e-pošte adresu e-pošte. Osnovna pravila za izradu validatora mogu se pronaći na stranici "FormIt Validators".
  • &validationErrorMessage - sadrži poruku koja će biti prikazana ako obrazac sadrži pogreške.
  • &successMessage - poruka koju će korisnik vidjeti ako je poruka uspješno poslana.

Sve što preostaje je stvoriti chunk tpl.email koji će sadržavati predložak pisma.

Poruka

Od: [[+name]]

E-mail: [[+email]]

Telefon: [[+telefon]]

Poruka: [[+poruka]]

MODX - Chunk tpl.e-mail

Pažnja: Za prikaz vrijednosti polja obrasca koriste se rezervirana mjesta.

Demonstracija funkcioniranja obrasca za povratne informacije

Pokazat ćemo glavne točke pri radu s obrascem za povratne informacije na stranici pomoću sljedećih slika.


MODX - obrazac za povratne informacije nije potvrđen



Gotovo sve komercijalne stranice imaju kontakt stranicu, koja sadrži kontakt formu putem koje korisnici mogu pisati administraciji stranice. Danas ćemo pogledati kako brzo stvoriti Kontakt obrazac. Implementirat ćemo obrazac za povratne informacije pomoću paketa Formit u kombinaciji s paketom AjaxForm, instalirajte ih ako ih nemate instalirane.

Izrada obrasca za povratne informacije na MODX Revo s dopuštenjem za obradu osobnih podataka u skladu sa Zakonom br. 152-FZ „O osobnim podacima” od 27. srpnja 2006.

Prije svega, kreiramo chunk u koji će biti pohranjen sam obrazac, neka to bude chunk “contact-form” i u njega smjestimo kod standardna forma, web stranice uglavnom izrađujem koristeći bootstrap, pa ću standardni predložak malo izmijeniti, njegov će statički kod biti ovakav:

Korisnički ugovor

Vaš izgled bit će drugačiji jer je moj oblik stiliziran prema projektu, css stilovi Ne vidim smisao objavljivanja.

Ovdje možete vidjeti ostale obrasce getbootstrap.com/css/#forms

Sada pretvorimo kod u dinamički, uzimajući u obzir sintaksu Formit I AjaxForm, dobivamo sljedeće.

[[+fi.error.name]]
[[+fi.error.email]]
[[+fi.error.pfone]]
[[+fi.error.message]]

Označavanjem ovog okvira dajem privolu za obradu mojih osobnih podataka u skladu sa Zakonom br. 152-FZ „O osobnim podacima” od 27. srpnja 2006. i prihvaćam uvjete korisničkog sporazuma

[[+fi.success:is=`1`:then=`
[[+fi.successMessage]]
`]] [[+fi.validation_error:is=`1`:then=`
[[+fi.validation_error_message]]
`]]

Kreirajmo sada još jedan dio koji će generirati pismo, nazovimo ga tpl-kontaktni obrazac sa sljedećim sadržajem:

Ime: [[+ime]]

Email: [[+email]]

Telefon: [[+pfone]]

Poruka: [[+poruka]]

Pa, postalo je moguće izvući zaključak na pravom mjestu:

[[!AjaxForm? &snippet=`FormIt` &form=`kontact-form` &emailTpl=`tpl-kontact-form` &hooks=`spam,email` &emailSubject=`Poruka sa stranice [[++site_url]]` &emailTo=` [e-mail zaštićen]` &validate=`name:required,email:required` &validationErrorMessage=`Obrazac sadrži pogreške!` &successMessage=`Poruka je uspješno poslana!` ]]

Ne zaboravite promijeniti vrijednost emailTo na svoju e-poštu.

Dokumentacija komponente:

  1. FormItdocs.modx.com/extras/revo/formit
  2. AjaxFormdocs.modx.pro/components/ajaxform

To je u biti to!