[Gäller även för v8]{class="badge positive" title="Gäller även Campaign v8"}
Redigera formulär editing-forms
Översikt
Marknadsförare och operatörer använder indataformulär för att skapa, ändra och förhandsgranska poster. Forms visar en visuell representation av information.
Du kan skapa och ändra indataformulär:
- Du kan ändra de fabriksinmatningsformulär som levereras som standard. Fabriksindataformulären är baserade på fabriksdatascheman.
- Du kan skapa anpassade inmatningsformulär baserade på datamappningar som du definierar.
Forms är entiteter av typen xtk:form
. Du kan visa indataformulärstrukturen i schemat xtk:form
. Om du vill visa det här schemat väljer du Administration > Configuration > Data schemas på menyn. Läs mer om formulärstrukturen.
Välj Administration> Configuration >Input forms på menyn för att få åtkomst till indataformulär:
Om du vill utforma formulär redigerar du XML-innehållet i XML-redigeraren:
Om du vill förhandsgranska ett formulär klickar du på fliken Preview:
Formulärtyper
Du kan skapa olika typer av indataformulär. Formulärtypen avgör hur användarna navigerar i formuläret:
-
Konsolskärm
Det här är standardformulärtypen. Formuläret består av en enda sida.
-
Innehållshantering
Använd den här formulärtypen för innehållshantering. Se det här användningsexemplet.
-
Assistent
Formuläret innehåller flera flytande skärmar som ordnas i en viss sekvens. Användarna navigerar från en skärm till nästa. Läs mer.
-
Ikoner
Formuläret består av flera sidor. Användarna kan navigera i formuläret genom att markera ikoner till vänster om formuläret.
-
Anteckningsbok
Formuläret består av flera sidor. Användarna kan navigera i formuläret genom att markera flikar högst upp i formuläret.
-
Lodrät ruta
I det här formuläret visas ett navigeringsträd.
-
Vågrät ruta
I det här formuläret visas en lista med objekt.
Behållare
I formulär kan du använda behållare för olika syften:
- Ordna innehåll i formulär
- Definiera åtkomst till inmatningsfält
- Kapsla in formulär i andra formulär
Ordna innehåll
Använd behållare för att ordna innehåll i formulär:
- Du kan gruppera fält i avsnitt.
- Du kan lägga till sidor i flersidiga formulär.
Använd elementet <container>
om du vill infoga en behållare. Läs mer.
Gruppera fält
Använd behållare för att gruppera inmatningsfält i ordnade avsnitt.
Använd följande element om du vill infoga ett avsnitt i ett formulär: <container type="frame">
. Om du vill lägga till en avsnittsrubrik använder du attributet label
.
Syntax: <container type="frame" label="
section_title"> […] </container>
I det här exemplet definierar en behållare avsnittet Skapa som omfattar indatafälten Created by och Name:
<form _cs="Coupons (nms)" entitySchema="xtk:form" img="xtk:form.png" label="Coupons"
name="coupon" namespace="nms" type="default" xtkschema="xtk:form">
<input xpath="@code"/>
<input xpath="@type"/>
<container label="Creation" type="frame">
<input xpath="createdBy"/>
<input xpath="createdBy/@name"/>
</container>
</form>
Lägga till sidor i flersidiga formulär
För flersidiga formulär använder du en behållare för att skapa en formulärsida.
I det här exemplet visas behållare för sidorna Allmänt och Detaljer i ett formulär:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
Definiera åtkomst till fält
Använd behållare för att definiera vad som är synligt och för att definiera åtkomst till fält. Du kan aktivera och inaktivera fältgrupper.
Kapsla formulär
Använd behållare för att kapsla in formulär i andra formulär. Läs mer.
Referenser till bilder
Om du vill söka efter bilder väljer du Administration > Configuration > Images på menyn.
Om du vill associera en bild med ett element i formuläret, till exempel en ikon, kan du lägga till en referens till en bild. Använd attributet img
i elementet <container>
.
Syntax: img="
namespace
:
filename
.
extension
"
I det här exemplet visas referenser till bilderna book.png
och detail.png
från namnområdet ncm
:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
De här bilderna används för ikoner som användare klickar på för att navigera i ett flersidigt formulär:
Skapa ett enkelt formulär create-simple-form
Så här skapar du ett formulär:
-
Välj Administration > Configuration > Input forms på menyn.
-
Klicka på knappen New överst till höger i listan.
-
Ange formuläregenskaperna:
-
Ange formulärnamnet och namnutrymmet.
Formulärnamnet och namnutrymmet kan matcha det relaterade dataschemat. I det här exemplet visas ett formulär för databasschemat
cus:order
:code language-xml <form entitySchema="xtk:form" img="xtk:form.png" label="Order" name="order" namespace="cus" type="iconbox" xtkschema="xtk:form"> […] </form>
Du kan också uttryckligen ange dataschemat i attributet
entity-schema
.code language-xml <form entity-schema="cus:stockLine" entitySchema="xtk:form" img="xtk:form.png" label="Stock order" name="stockOrder" namespace="cus" xtkschema="xtk:form"> […] </form>
-
Ange etiketten som ska visas i formuläret.
-
Du kan också ange formulärtypen. Om du inte anger någon formulärtyp används skärmtypen för konsolen som standard.
Om du utformar ett flersidigt formulär kan du utelämna formulärtypen i elementet
<form>
och ange typen i en behållare.
-
-
Klicka på Save.
-
Infoga formulärelementen.
Om du till exempel vill infoga ett inmatningsfält använder du elementet
<input>
. Ange attributetxpath
som fältreferens som ett XPath-uttryck. Läs mer.I det här exemplet visas indatafält baserade på schemat
nms:recipient
.code language-xml <input xpath="@firstName"/> <input xpath="@lastName"/>
-
Om formuläret baseras på en viss schematyp kan du söka efter fälten för det här schemat:
-
Klicka på Insert > Document fields.
-
Markera fältet och klicka på OK.
-
-
Du kan även ange fältredigeraren.
En standardredigerare för fält är associerad med varje datatyp:
- För datumfält visar formuläret en indatakalender.
- För ett uppräkningstypfält visas en urvalslista i formuläret.
Du kan använda dessa fältredigerartyper:
table 0-row-2 1-row-2 2-row-2 3-row-2 Fältredigerare Formulärattribut Alternativknapp type="radiobutton"
Kryssruta type="checkbox"
Redigera träd type="tree"
Läs mer om minneslistkontroller.
-
Du kan även definiera åtkomst till fälten:
table 0-row-3 1-row-3 2-row-3 3-row-3 Element Attribut Beskrivning <input>
read-only="true"
Ger skrivskyddad åtkomst till ett fält <container>
type="visibleGroup" visibleIf="
edit-expr"
Visar en grupp fält villkorligt <container>
type="enabledGroup" enabledIf="
edit-expr"
Aktiverar en grupp fält villkorligt Exempel:
code language-xml <container type="enabledGroup" enabledIf="@gender=1"> […] </container> <container type="enabledGroup" enabledIf="@gender=2"> […] </container>
-
Du kan också använda behållare för att gruppera fält i avsnitt.
code language-xml <container type="frame" label="Name"> <input xpath="@firstName"/> <input xpath="@lastName"/> </container> <container type="frame" label="Contact details"> <input xpath="@email"/> <input xpath="@phone"/> </container>
Skapa ett flersidigt formulär create-multipage-form
Du kan skapa flersidiga formulär. Du kan också kapsla in formulär i andra formulär.
Skapa ett iconbox
-formulär
Använd formulärtypen iconbox
för att visa ikoner till vänster om formuläret, som tar användarna till olika sidor i formuläret.
Så här ändrar du typen av ett befintligt formulär till iconbox
:
-
Ändra attributet
type
för elementet<form>
tilliconbox
:code language-xml <form […] type="iconbox">
-
Ange en behållare för varje formulärsida:
-
Lägg till ett
<container>
-element som underordnat element till elementet<form>
. -
Om du vill definiera en etikett och en bild för ikonen använder du attributen
label
ochimg
.code language-xml <form entitySchema="xtk:form" name="Service provider" namespace="nms" type="iconbox" xtkschema="xtk:form"> <container img="xtk:properties.png" label="General"> <input xpath="@label"/> <input xpath="@name"/> […] </container> <container img="nms:msgfolder.png" label="Details"> <input xpath="@address"/> […] </container> <container img="nms:supplier.png" label="Services"> […] </container> </form>
Du kan också ta bort attributet
type="frame"
från de befintliga<container>
-elementen. -
Skapa ett anteckningsboksformulär
Använd formulärtypen notebook
om du vill visa flikar högst upp i formuläret, vilket tar användarna till olika sidor.
Så här ändrar du typen av ett befintligt formulär till notebook
:
-
Ändra attributet
type
för elementet<form>
tillnotebook
:code language-xml <form […] type="notebook">
-
Lägg till en behållare för varje formulärsida:
- Lägg till ett
<container>
-element som underordnat element till elementet<form>
. - Använd attributen
label
ochimg
för att definiera ikonens etikett och bild.
code language-xml <form entitySchema="xtk:form" name="Service provider" namespace="nms" type="notebook" xtkschema="xtk:form"> <container label="General"> <input xpath="@label"/> <input xpath="@name"/> […] </container> <container label="Details"> <input xpath="@address"/> […] </container> <container label="Services"> […] </container> </form>
Du kan också ta bort attributet
type="frame"
från de befintliga<container>
-elementen. - Lägg till ett
Kapsla formulär
Du kan kapsla in formulär i andra formulär. Du kan t.ex. kapsla anteckningsboksformulär i ikonboxformulär.
Nivån för navigering i kapslingskontroller. Användare kan gå ned på djupet i delformulär.
Om du vill kapsla ett formulär i ett annat formulär infogar du ett <container>
-element och ställer in attributet type
på formulärtypen. För formuläret på den översta nivån kan du ange formulärtypen i en yttre behållare eller i elementet <form>
.
Exempel
I det här exemplet visas ett komplext formulär:
-
Formuläret på den översta nivån är ett ikonformulär. Det här formuläret består av två behållare med etiketterna Allmänt och Detaljer.
Det innebär att det yttre formuläret visar sidorna Allmänt och Detaljer på den översta nivån. Användarna kommer åt dessa sidor genom att klicka på ikonerna till vänster i formuläret.
-
Delformuläret är ett anteckningsboksformulär som är kapslat i behållaren Allmänt . Delformuläret består av två behållare med etiketterna Namn och Kontakt.
<form _cs="Profile (nms)" entitySchema="xtk:form" img="xtk:form.png" label="Profile" name="profile" namespace="nms" xtkschema="xtk:form">
<container type="iconbox">
<container img="ncm:general.png" label="General">
<container type="notebook">
<container label="Name">
<input xpath="@firstName"/>
<input xpath="@lastName"/>
</container>
<container label="Contact">
<input xpath="@email"/>
</container>
</container>
</container>
<container img="ncm:detail.png" label="Details">
<input xpath="@birthDate"/>
</container>
</container>
</form>
På sidan Allmänt i det yttre formuläret visas flikarna Namn och Kontakt.
Om du vill kapsla ett formulär i ett annat formulär infogar du ett <container>
-element och ställer in attributet type
på formulärtypen. För formuläret på den översta nivån kan du ange formulärtypen i en yttre behållare eller i elementet <form>
.
Exempel
I det här exemplet visas ett komplext formulär:
-
Formuläret på den översta nivån är ett ikonformulär. Det här formuläret består av två behållare med etiketterna Allmänt och Detaljer.
Det innebär att det yttre formuläret visar sidorna Allmänt och Detaljer på den översta nivån. Användarna kommer åt dessa sidor genom att klicka på ikonerna till vänster i formuläret.
-
Delformuläret är ett anteckningsboksformulär som är kapslat i behållaren Allmänt . Delformuläret består av två behållare med etiketterna Namn och Kontakt.
<form _cs="Profile (nms)" entitySchema="xtk:form" img="xtk:form.png" label="Profile" name="profile" namespace="nms" xtkschema="xtk:form">
<container type="iconbox">
<container img="ncm:general.png" label="General">
<container type="notebook">
<container label="Name">
<input xpath="@firstName"/>
<input xpath="@lastName"/>
</container>
<container label="Contact">
<input xpath="@email"/>
</container>
</container>
</container>
<container img="ncm:detail.png" label="Details">
<input xpath="@birthDate"/>
</container>
</container>
</form>
På sidan Allmänt i det yttre formuläret visas flikarna Namn och Kontakt.
Ändra ett fabriksinmatningsformulär modify-factory-form
Så här ändrar du ett fabriksformulär:
-
Ändra fabriksinmatningsformuläret:
- Välj Administration > Configuration > Input forms på menyn.
- Markera ett inmatningsformulär och ändra det.
Du kan utöka fabriksdatamappningar, men du kan inte utöka fabriksinmatningsformulär. Vi rekommenderar att du ändrar fabriksinmatningsformulär direkt utan att återskapa dem. Vid uppgraderingar sammanfogas ändringarna i fabriksinmatningsformulären med uppgraderingarna. Om den automatiska sammanfogningen misslyckas kan du lösa konflikterna. Läs mer.
Om du till exempel utökar ett fabriksschema med ett extra fält kan du lägga till det här fältet i det relaterade fabriksformuläret.
Validera formulär validate-forms
Du kan inkludera valideringskontroller i formulär.
Bevilja skrivskyddad åtkomst till fält
Använd attributet readOnly="true"
om du vill ge skrivskyddad åtkomst till ett fält. Du kanske vill visa primärnyckeln för en post, men med skrivskyddad åtkomst. Läs mer.
I det här exemplet visas primärnyckeln (iRecipientId
) för schemat nms:recipient
med skrivskyddad åtkomst:
<value xpath="@iRecipientId" readOnly="true"/>
Kontrollera obligatoriska fält
Du kan kontrollera obligatorisk information:
- Använd attributet
required="true"
för de obligatoriska fälten. - Använd noden
<leave>
för att kontrollera fälten och visa felmeddelanden.
I det här exemplet krävs e-postadressen och ett felmeddelande visas om användaren inte har angett den här informationen:
<input xpath="@email" required="true"/>
<leave>
<check expr="@email!=''">
<error>The email address is required.</error>
</check>
</leave>
Läs mer om uttrycksfält och formulärkontext.
Validera värden
Du kan använda JavaScript SOAP-anrop för att validera formulärdata från konsolen. Använd dessa anrop för komplex validering, till exempel för att kontrollera ett värde mot en lista över godkända värden. Läs mer.
-
Skapa en valideringsfunktion i en JS-fil.
Exempel:
code language-js function nms_recipient_checkValue(value) { logInfo("checking value " + value) if (…) { logError("Value " + value + " is not valid") } return 1 }
I det här exemplet heter funktionen
checkValue
. Den här funktionen används för att kontrollera datatypenrecipient
i namnutrymmetnms
. Värdet som kontrolleras loggas. Om värdet inte är giltigt loggas ett felmeddelande. Om värdet är giltigt returneras värdet 1.Du kan använda det returnerade värdet för att ändra formuläret.
-
Lägg till elementet
<soapCall>
i elementet<leave>
i formuläret.I det här exemplet används ett SOAP-anrop för att validera strängen
@valueToCheck
:code language-xml <form name="recipient" (…)> (…) <leave> <soapCall name="checkValue" service="nms:recipient"> <param exprIn="@valueToCheck" type="string"/> </soapCall> </leave> </form>
I det här exemplet används metoden
checkValue
och tjänstennms:recipient
:- Tjänsten är namnutrymmet och datatypen.
- Metoden är funktionsnamnet. Namnet är versalkänsligt.
Anropet utförs synkront.
Alla undantag visas. Om du använder elementet
<leave>
kan användarna inte spara formuläret förrän den angivna informationen har validerats.
I det här exemplet visas hur du kan ringa tjänstanrop inifrån formulär:
<enter>
<soapCall name="client" service="c4:ybClient">
<param exprIn="@id" type="string"/>
<param type="boolean" xpathOut="/tmp/@count"/>
</soapCall>
</enter>
I det här exemplet är indata ett ID, som är en primärnyckel. När användarna fyller i formuläret för detta ID görs ett SOAP med detta ID som indataparameter. Utdata är ett booleskt värde som skrivs till det här fältet: /tmp/@count
. Du kan använda det här booleska innehållet i formuläret. Läs mer om formulärkontext.