WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Enkel och kraftfull PHP-klass för att hantera formulär (https://www.wn.se/forum/showthread.php?t=1041222)

geon 2010-03-30 15:51

Enkel och kraftfull PHP-klass för att hantera formulär
 
Hej!

Jag delar med mig av min PHP kod för att hantera formulär. Klassen tar hand om all formulärlogik, rendering, validering och exekverar automatiskt din kod för att hantera datan när den är klar. Det är perfekt för att bygga formulär på t.ex. kontaktsidor eller admin-gränssnitt.

Koden är släppt med MIT-licensen, så det är fritt fram att använda den hur du vill, kommerciellt eller inte, så länge du inte tar bort licens-länken i källkods-kommentaren. "Free" som i "free speech" och "free beer", alltså.

Du hittar den enklast på GitHub: http://github.com/geon/wwForm

Titta gärna på exempelfilen för att få en känsla för hur det används:
http://github.com/geon/wwForm/blob/master/examples.php

Mer komplett dokumentation kommer (nog) snart. Tills dess kan du titta i källkoden.

emilv 2010-03-30 16:22

Nice! Ser mycket smidigt ut!

studiox 2010-03-30 16:41

Forms är alltid strul :-)

Fungerar detta över flera pages också? Jag har länge letat efter en med "wizard" som kan ha conditions regler. Typ om du fyllt i 12 på fråga 1, sidan 1 kommer du till sida 3.

Slutade med att jag fick skriva en själv där alla frågor, regler läggs i en DB. Men det blev rätt bökigt.

Jonas 2010-03-30 16:49

Håller med emilv, men jag skulle se en ändring på hur du hanterar datum.

Att klippa o klistra i en sträng, och med dagens alla standarder för hur datum skrivs så är php's funktion "strtotime" smidigare (den returnerar false om det är felaktigt/okänt format).

Annars är det grymt!!

Finns inget tråkigare än att bygga formulär.

geon 2010-03-30 17:51

studiox:

Det finns inget specifikt stöd för wizards, men det är relativt enkelt att bygga. Skapa ett formulär för varje sida, och redirect:a till en lämplig URL. Sen kör du Execute() och Render() för just den aktuella sidans formulär.

Uppdatering:
Se exempelkoden på
http://github.com/geon/wwForm/blob/m...les/wizard.php

geon 2010-03-30 17:56

Jonas:

strtotime kunde ju vara en idé. Men ska man ha något bättre, tycker jag man lika gärna kan gå hela vägen med någon jQuery-baserad date picker.

Men det är ju lätt att implementera om du har lust! (Försöker hålla liv i opensource-andan.)

studiox 2010-03-30 18:30

Citat:

Ursprungligen postat av geon (Inlägg 20348868)
studiox:

Det finns inget specifikt stöd för wizards, men det är relativt enkelt att bygga. Skapa ett formulär för varje sida, och redirect:a till en lämplig URL. Sen kör du Execute() och Render() för just den aktuella sidans formulär.

Din Process var ju smart faktiskt :) - Gissar att jag själv måste ha koll på samtliga svar, din klass har inget inbyggd hantering av Sessions ex?

geon 2010-03-30 19:22

Citat:

Ursprungligen postat av studiox (Inlägg 20348877)
Gissar att jag själv måste ha koll på samtliga svar, din klass har inget inbyggd hantering av Sessions ex?

Nej, formulärklassen sköter bara om själva formuläret. Du kan ju spara alla svar i sessionsvariableln eller en databas. Sen, om man går tillbaka till en tidigare sida bör ju den vara för-ifylld. Alla formulfältsklasser (wwText, wwEmail, etc.) har en construktorparameter "$PresetValue", som är till för just det. Kolla på det "avancerade" exemplet i README-filen på GitHub.

Conny Westh 2010-03-30 19:28

Lägg upp alla filerna inklusive hjälp filen i en zip så det går att ladda ned samlat.... som du kan kalla geon_wwform.zip elelr nåt ditåt

Jimpsson 2010-03-30 19:44

Citat:

Ursprungligen postat av ConnyWesth (Inlägg 20348884)
Lägg upp alla filerna inklusive hjälp filen i en zip så det går att ladda ned samlat.... som du kan kalla geon_wwform.zip elelr nåt ditåt

Klicka på "Download Source".


Alla tider är GMT +2. Klockan är nu 04:13.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson