Control <f:collectionForm>
slouží k uložení dat z odeslaného formuláře do prvku kolekce. Control podporuje validaci zaslaných dat na straně serveru, viz Koncepty/Formuláře.
<f:collectionForm runat="server" targetCollection="someCollection"> <formTemplate> <f:input runat="server" id="someFormField" targetField="someFieldofSomeCollection" /> <f:sendButton runat="server" /> </formTemplate> <sentTemplate> Formulář byl úspěšně odeslán. </sentTemplate> </f:collectionForm>
Pro poslání dat z formuláře na email slouží <f:emailForm>
.
Atributy
id povinný [string]
Jedinečné jméno controlu. Pod tímto jménem je obsah controlu dostupný v šabloně emailu. Zároveň je toto jméno použito jako jméno prvku ve formuláři, tj. je zapsáno do atributu
name
příslušného HTML elementu.resetOnSend nepovinný [true, false]
Při nastavení se po odeslání formuláře zobrazí obě šablony
formTemplate
isentTemplate
. Ve výchozím nastavení false se zobrazí jen šablonasentTemplate
.targetCollection povinný [jméno cílové kolekce]
Jméno kolekce definované v Site.config, do které se ukládají odeslaná data.
Templates
Před odesláním formuláře se na stránce zobrazuje obsah formTemplate
, po úspěšném odeslání potom sentTemplate
.
- formTemplate – template s formulářem. Může obsahovat tyto formulářové pole:
<f:input>
<f:textarea>
<f:check>
<f:select>
<f:hidden>
<f:const>
<f:sendbutton>
- sentTemplate – obsah template se vypíše po úspěšném odeslání formuláře uživatelem (tj. obsah všech formulářových polí projde úspěšně validací na straně serveru).
Příklad
Jednoduchý kontaktní formulář s poli pro email uživatele a text zprávy uděláme takto:
<form method="post" runat="server"> <f:CollectionForm runat="server" id="contact" targetCollection="messageCol"> <formTemplate> <label> Vaše jméno* <f:input runat="server" id="name" targetField="name" /> </label> <label> Email* <f:input runat="server" id="email" targetField="email" /> </label> <label> Zpráva* <f:textarea runat="server" id="message" targetField="message" /> </label> <f:sendButton runat="server" value="Odeslat" /> </formTemplate> <sentTemplate> <p>Zpráva byla odeslána. Díky!</p> </sentTemplate> </f:CollectionForm> </form>
Data ukládáme do kolekce messageCol
(atribut targetCollection="messageCol"
), musíme ji tedy mít deklarovanou v Site.config i s patřičným typem jejích prvků:
... <Vars> ... <Collection name="messageCol" itemType="MessageItem" /> ... </Vars> ... <Types> ... <Type name="MessageItem"> <SimpleText name="name" /> <SimpleText name="email" /> <Text name="message" /> </Type> ... </Types> ...
Validace dat
Příklad je pro názornost a přehlednost uveden bez validace zaslaných dat. O tom, jak validovat zaslaná data na straně serveru, se píše v článku Koncepty/Formuláře.