<f:collectionForm>

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 formTemplatesentTemplate. Ve výchozím nastavení false se zobrazí jen šablona sentTemplate.

  • 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.

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.

Připomínky a postřehy

Máte-li nějakou připomínku, dobrý nápad nebo jste našli v dokumentaci chybu, rádi od vás uslyšíme.