Ibland måste vi dela upp formuläret i flera delar (sidor), behandla dem separat och sedan sammanställa dem till ett resultat.
I den här artikeln beskrivs metoder och designmönster för att göra detta.
Note:
Frågan om att dela upp ett formulär i flera steg är mycket komplex, särskilt om du vill göra det bra. Jag har stött på många metoder under min livstid, som jag kommer att diskutera här. Vissa tillvägagångssätt ser tilltalande ut, men är naiva och fungerar bara i vissa fall. För varje tillvägagångssätt beskriver jag när det är meningsfullt och vilka tillvägagångssätt som inte är meningsfulla.
Vanligtvis är målet att hämta grunddata från det första formuläret på den första sidan, validera dem, spara dem "någonstans" och visa nästa sida.
När användaren kommer till den sista sidan måste hela formuläret skickas in och inmatningarna behandlas.
I varje steg är det viktigt att alltid noggrant validera alla uppgifter och låta användaren hoppa tillbaka genom sidorna när han eller hon vill så att han eller hon kan korrigera uppgifterna när han eller hon stöter på ett fel. Om formuläret dessutom ska återges på villkor baserat på de uppgifter som redan erhållits är detta en mycket krävande process.
Vi kan antingen själva implementera de enskilda formulären i ren HTML och sedan hantera behandlingen i PHP eller använda färdiga lösningar som Nette forms.
Exempel från livet:
Mycket ofta skickar nybörjare programmerare e-post till mig och ställer till synes enkla frågor som det finns en färdig lösning på. Till exempel specifikt om formulärbehandling i PHP.
Jag rekommenderar alltid att man hoppar över manuell bearbetning helt och hållet och använder en färdig lösning i stället. I verkligheten är det mycket komplicerat att korrekt genomföra till exempel validering av den inmatade e-postadressen och att två lösenord i två fält matchar varandra, samtidigt som vi vill omdirigera användaren tillbaka till det förfyllda formuläret enligt hans uppgifter och med felmeddelanden i händelse av ett fel.
Eftersom människor inte vet att de inte vet att de inte vet att de inte vet och därför, istället för att investera en timmes tid i att lära sig en färdig lösning för 99,99 % av problemen, föredrar de att välja sin egen lösning, som de spenderar dussintals timmar på att felsöka, och det finns fortfarande fall där formulär inte fungerar, ger fel, har säkerhetsbrister och inte skyddar de uppgifter som matas in.
Målet med det här steget är att skapa flera sidor på olika URL:er som kommer att innehålla tomma formulär.
Jag rekommenderar att du implementerar varje formulär oberoende av de andra (atomärt) och hanterar statusöverföringen i ett annat applikationslager. Anledningen är att varje formulär i praktiken kommer att hantera datavalidering på olika sätt, skriva sina utdata på olika sätt, hantera fel på olika sätt, och vi kommer förmodligen att vilja utöka eller ändra det med tiden, så vi behöver inte känna till sammanhanget för hela processen och ändra dussintals webbplatser för att göra det.
När vi behandlar det första formuläret vill vi först validera de mottagna uppgifterna och om de är korrekta, skicka vidare användaren till det andra steget. Det är en bra idé att hantera omdirigeringen som en HTTP-omdirigering, eftersom det lätt kan hända att uppgifterna inte är giltiga, och i så fall vill vi skicka tillbaka användaren till det första formuläret och inte till nästa steg.
Vi kan i princip lagra tillstånd på fyra olika sätt:
Inte rekommenderat:
Rekommenderat:
Ingen av dessa lösningar är perfekt eller den enda rätta. Själv kombinerar jag flera metoder när jag arbetar med lösningar i flera steg. Vanligtvis löser jag till exempel en kundvagn som en databastabell, till vilken jag tilldelar de uppgifter jag redan har samlat in och binder den antingen till en användare (om han är inloggad) eller till en session (om han inte är inloggad och vi inte känner varandra ännu).
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | sv