Kako napraviti graditelja formulara
Graditelj formulara omogućava ljudima da sami osmisle svoje formulare — biraju polja, postavljaju pravila, objave link — a zatim prikuplja odgovore. Iza toga stoje tri stvari: definicija formulara sačuvana kao podatak, prikazivač koji definiciju pretvara u radni formular i skladište odgovora sa obaveštenjima i izvozom. Pre nego što ga pravite, proverite da li vam zaista treba: ako vam treba samo kontakt formular ili formular za prijavu, napravite taj formular direktno i preskočite graditelja.
Da li uopšte treba graditelj?
| Vaša situacija | Napravite ovo |
|---|---|
| Jedan ili dva formulara koji se retko menjaju | Same formulare. Pogledajte kako dodati kontakt formular. |
| Mnogo formulara koje prave nerazvojni članovi tima | Interni graditelj formulara |
| Formulari su deo vašeg proizvoda (kupci ih prave) | Graditelj formulara sa nalozima, ograničenjima i ugradnjom |
| Uglavnom želite rezultate anketa i grafikone | Aplikacija za ankete |
Graditelj je veći projekat od formulara, jer svaki tip polja mora da radi u uređivaču, javnom formularu, validaciji, skladištenju, obaveštenjima i izvozu.
Šta graditelj formulara treba da ima
Definicije formulara
Sačuvajte svaki formular kao listu polja, u strukturisanom obliku (JSON u Postgres koloni dobro funkcioniše). Polje može izgledati ovako:
- id — stabilan ID koji se nikada ne menja, čak ni kada se naziv promeni
- type — tekst, imejl, broj, dugački tekst, izbor, potvrdni okvir, datum, fajl
- label i tekst pomoći
- obavezno, min / maks, dozvoljeni tipovi fajlova
- opcije za polja izbora
- redosled i, po želji, uslov („prikaži samo ako je polje X jednako Y“)
Uređivač menja ovu listu; javni formular je čita. U tome je ceo trik: nema novog koda za svaki formular.
Odgovori
- Odgovori — formular, verzija formulara, vreme slanja, odgovori vezani za ID polja, status (novo, pročitano, arhivirano).
- Fajlovi — otpremljeni fajlovi pripadaju skladištu fajlova, a odgovor čuva samo referencu, nikada unutar reda baze podataka.
Stranice
- Spisak formulara sa brojem odgovora.
- Uređivač — dodavanje, promena redosleda i podešavanje polja, uz živi pregled pored.
- Podešavanja — poruka potvrde ili preusmeravanje, obaveštenja imejlom, datumi otvaranja i zatvaranja, ograničenje broja odgovora.
- Javni formular na sopstvenom linku i verzija za ugradnju na druge sajtove.
- Tabela odgovora sa pretragom, statusom, prikazom detalja i izvozom u CSV.
Odluke i kompromisi
Verzionisanje. Neko će posle 200 odgovora promeniti „Telefon“ u „Broj mobilnog“. Ako se odgovori čuvaju uz ID polja i svaki odgovor beleži verziju formulara, stari odgovori se i dalje ispravno prikazuju. Bez toga, vaši podaci će se tiho pomešati.
Validacija se izvršava dvaput. Proveravajte polja u pregledaču radi brze povratne informacije, i ponovo na serveru, jer svako može da pošalje podatke direktno na vaš endpoint. Važi samo provera na serveru.
Slanje fajlova. Donose troškove skladišta, ograničenja veličine, proveru tipa fajla i pitanja privatnosti (CV-ji, lična dokumenta, medicinski formulari). Ograničite tipove i veličine i podrazumevano učinite otpremljene fajlove privatnim, čitljivim samo vlasnicima formulara. Pogledajte kako dodati slanje fajlova u aplikaciju.
Obaveštenja. Očekuje se „pošalji mi imejl kada neko pošalje odgovor“. Za to je potreban provajder imejla i API ključ; pogledajte kako slati imejlove iz aplikacije.
Spam. Javni formular će botovi pronaći. Koristite polje-zamku (honeypot), skriveno od ljudi i popunjeno od botova, ograničenja zahteva po IP adresi, validaciju na serveru i, ako je potrebno, servis CAPTCHA.
Ugradnja. Ugradnja preko iframe-a je najjednostavniji i najbezbedniji način da formular stavite na tuđi sajt. Ugradnja preko skripte izgleda izvornije, ali ju je teže napraviti i obezbediti.
Uslovna logika. „Prikaži ovo polje samo ako…“ je popularno i višestruko povećava obim testiranja. Dodajte je kada osnove budu čvrste.
Prvi upit koji radi
Napravi veb aplikaciju za graditelja formulara za moj tim. Prijavljeni korisnici prave formulare u uređivaču sa živim pregledom. Tipovi polja: kratak tekst, dugačak tekst, imejl, broj, datum, izbor jedne opcije, potvrdni okviri i otpremanje fajla. Svako polje ima stabilan ID, naziv, tekst pomoći, oznaku obaveznosti i pravila specifična za tip (min/maks, opcije, dozvoljeni tipovi fajlova i ograničenje veličine od 10 MB). Sačuvaj definiciju formulara kao JSON sa brojem verzije koji se povećava pri svakoj objavi. Svaki formular dobija javni link i iframe kod za ugradnju. Validiraj odgovore na serveru prema objavljenoj verziji, sačuvaj odgovore vezane za ID polja uz verziju formulara, a otpremljene fajlove stavi u privatno skladište fajlova. Dodaj skriveno polje-zamku i ograničenje zahteva po IP adresi. Vlasnici formulara vide tabelu odgovora sa statusom (novo, pročitano, arhivirano), prikaz detalja i izvoz u CSV. Sve čuvaj u bazi podataka. Uslovnu logiku i imejl obaveštenja ostavi za kasnije.
Koraci izrade
- Uređivač i definicija. Napravite formular sa svakim tipom polja i pogledajte sačuvani JSON sa agentom. Da li je čist i stabilan?
- Javni formular. Popunite ga na telefonu. Proverite poruke validacije i ekran potvrde.
- Validacija na serveru. Zamolite agenta da pošalje odgovor koji krši pravila direktno na server, zaobilazeći stranicu. Trebalo bi da bude odbijen.
- Verzionisanje. Preimenujte i promenite redosled polja posle nekoliko odgovora. Stari odgovori treba i dalje da prikazuju tačne vrednosti.
- Otpremanja. Pokušajte fajl koji je prevelik i jedan pogrešnog tipa. Potvrdite da neznanac ne može da otvori otpremljeni fajl pogađanjem linka.
- Tabela odgovora i izvoz. Proverite CSV izvoz sa zarezima, prelomima reda i slovima sa dijakriticima u odgovorima.
- Obaveštenja, ugradnja, logika. Dodajte ih jedno po jedno.
Česte greške
- Čuvanje odgovora po nazivu. Nazivi se menjaju. Koristite stabilne ID-jeve polja.
- Validacija samo u pregledaču. To je pogodnost, a ne zaštita.
- Javno dostupni otpremljeni fajlovi. Formulari često prikupljaju dokumenta koja ljudi ne bi želeli da budu izložena.
- Bez zaštite od spama. Javni formular može da se napuni smećem za nekoliko dana.
- Pravljenje graditelja za jedan formular. Napravite formular.
- Neograničeni odgovori na javnom proizvodu. Ako kupci prave formulare, postavite ograničenja po planu, jer jedan popularan formular može da podigne račun za hosting.
Kada je gotov proizvod bolji izbor
Hostovani alati za formulare su odlični i jeftini za većinu potreba. Oni su već rešili ugradnju, spam, plaćanja, integracije i pristupačnost za desetine tipova polja. Ako vašem timu trebaju samo formulari, koristite jedan — pogledajte alternative za Typeform i alternative za Google Forms.
Napravite sopstveni kada odgovori treba da žive uz vaše sopstvene podatke (hrane CRM ili klijentski portal koji vodite), kada su vam potrebni tokovi posle slanja koje alati ne mogu da urade, kada su lokacija ili vlasništvo podataka zahtev ili kada su formulari funkcija proizvoda koji prodajete.
Izrada sa Mythex-om
Na Mythex-u opišete graditelja u četu i testirate uređivač i javni formular jedan pored drugog u živom pregledu. Mythex dodaje namensku bazu podataka za definicije formulara i odgovore, a skladište fajlova uključuje automatski kada aplikaciji zatrebaju otpremanja (ograničeno na 1 GB u Free planu). Obaveštenja imejlom idu preko provajdera koga povežete sopstvenim ključem. Objavite aplikaciju na mythex.ai linku ili na sopstvenom domenu u Pro planu, a linkovi javnih formulara rade sa tog mesta.
Pitanja
Kako graditelj formulara čuva formulare?
Obično kao definiciju formulara: listu polja, gde svako ima tip, naziv, pravila validacije i redosled, sačuvanu kao strukturisani podatak, na primer JSON. Ista definicija pokreće i uređivač i javni formular, pa dodavanje polja ne zahteva novi kod.
Kako treba čuvati odgovore na formulare?
Sačuvajte svaki odgovor uz referencu na verziju formulara za koju je popunjen, a odgovore vežite za ID polja. Tako preimenovanje ili promena redosleda polja kasnije ne kvari stare odgovore.
Kako da zaustavim spam na javnom formularu?
Kombinujte skriveno polje-zamku (honeypot), ograničenje broja zahteva po IP adresi, validaciju na serveru i, ako spam ostane, servis CAPTCHA. Nikada se ne oslanjajte samo na provere koje se izvršavaju u pregledaču.
Treba li mi pun graditelj formulara ili samo formular?
Ako su vam potrebna jedan ili dva fiksna formulara, napravite ih direktno — mnogo je jednostavnije. Graditelj se isplati kada netehnička lica treba da prave i menjaju mnogo formulara bez pitanja programera.