[Ook van toepassing op v8]{class="badge positive" title="Ook van toepassing op campagne v8"}
Formulieren bewerken editing-forms
Overzicht
Marktdeelnemers en operatoren gebruiken invoerformulieren om records te maken, te wijzigen en voor te vertonen. Forms geeft een visuele weergave van informatie weer.
U kunt invoerformulieren maken en wijzigen:
- U kunt de fabrieksinvoerformulieren wijzigen die standaard worden geleverd. De fabrieksinvoerformulieren zijn gebaseerd op de fabrieksgegevensschema's.
- U kunt aangepaste invoerformulieren maken op basis van gegevensschema's die u definieert.
Forms zijn entiteiten van het type xtk:form
. U kunt de structuur van het invoerformulier weergeven in het xtk:form
-schema. Kies Administration > Configuration > Data schemas in het menu om dit schema weer te geven. Lees meer over vormstructuur.
Als u invoerformulieren wilt openen, kiest u Administration> Configuration >Input forms in het menu:
Als u formulieren wilt ontwerpen, bewerkt u de XML-inhoud in de XML-editor:
Klik op het tabblad Preview als u een voorbeeld van een formulier wilt bekijken:
Formuliertypen
U kunt verschillende typen invoerformulieren maken. Het formuliertype bepaalt hoe gebruikers door het formulier navigeren:
-
Consolescherm
Dit is het standaardformuliertype. Het formulier bestaat uit één pagina.
-
Contentmanagement
Gebruik dit formuliertype voor inhoudsbeheer. Zie dit gebruiksgeval.
-
Assistent
Dit formulier bestaat uit meerdere zwevende schermen die in een bepaalde reeks zijn geordend. Gebruikers navigeren van het ene scherm naar het andere. Meer informatie.
-
Iconbox
Dit formulier bestaat uit meerdere pagina's. Gebruikers kunnen door het formulier navigeren door pictogrammen links van het formulier te selecteren.
-
Laptop
Dit formulier bestaat uit meerdere pagina's. Als gebruikers in het formulier willen navigeren, selecteren ze boven aan het formulier tabbladen.
-
Verticaal deelvenster
In dit formulier wordt een boomstructuur weergegeven.
-
Horizontaal venster
Dit formulier bevat een lijst met items.
Containers
In formulieren kunt u containers voor verschillende doeleinden gebruiken:
- Inhoud indelen in formulieren
- Toegang tot invoervelden definiëren
- Formulieren nesten in andere formulieren
Inhoud ordenen
Gebruik containers om inhoud in formulieren te ordenen:
- U kunt velden groeperen in secties.
- U kunt pagina's toevoegen aan formulieren met meerdere pagina's.
Als u een container wilt invoegen, gebruikt u het element <container>
. Meer informatie.
Velden groeperen
Gebruik containers om invoervelden te groeperen in georganiseerde secties.
Als u een sectie in een formulier wilt invoegen, gebruikt u het volgende element: <container type="frame">
. Als u een sectietitel wilt toevoegen, gebruikt u het attribuut label
.
Syntaxis: <container type="frame" label="
section_title"> […] </container>
In dit voorbeeld, bepaalt een container de sectie van de Aanmaak, die uit Created by en Name inputgebieden bestaat:
<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>
Pagina's toevoegen aan formulieren met meerdere pagina's
Voor formulieren met meerdere pagina's gebruikt u een container om een formulierpagina te maken.
Dit voorbeeld toont containers voor Algemene en Details pagina's van een vorm:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
Toegang tot velden definiëren
Gebruik containers om te definiëren wat zichtbaar is en om de toegang tot velden te definiëren. U kunt groepen velden in- of uitschakelen.
Formulieren nesten
Gebruik containers om formulieren in andere formulieren te nesten. Meer informatie.
Verwijzingen naar afbeeldingen
Als u afbeeldingen wilt zoeken, kiest u Administration > Configuration > Images in het menu.
Als u een afbeelding wilt koppelen aan een element in het formulier, bijvoorbeeld een pictogram, kunt u een verwijzing naar een afbeelding toevoegen. Gebruik bijvoorbeeld het kenmerk img
in het element <container>
.
Syntaxis: img="
namespace
:
filename
.
extension
"
In dit voorbeeld worden verwijzingen naar de book.png
- en detail.png
-afbeeldingen van de naamruimte ncm
getoond:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
Deze afbeeldingen worden gebruikt voor pictogrammen waarop gebruikers klikken om door een formulier met meerdere pagina's te navigeren:
Een eenvoudig formulier maken create-simple-form
Voer de volgende stappen uit om een formulier te maken:
-
Kies in het menu Administration > Configuration > Input forms .
-
Klik op de knop New rechtsboven in de lijst.
-
Geef de formuliereigenschappen op:
-
Geef de naam van het formulier en de naamruimte op.
De formuliernaam en de naamruimte kunnen overeenkomen met het gerelateerde gegevensschema. In dit voorbeeld ziet u een formulier voor het
cus:order
-gegevensschema:code language-xml <form entitySchema="xtk:form" img="xtk:form.png" label="Order" name="order" namespace="cus" type="iconbox" xtkschema="xtk:form"> […] </form>
U kunt het gegevensschema ook expliciet opgeven in het kenmerk
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>
-
Geef het label op dat op het formulier moet worden weergegeven.
-
Geef desgewenst het formuliertype op. Als u geen formuliertype opgeeft, wordt standaard het schermtype voor de console gebruikt.
Als u een formulier met meerdere pagina's ontwerpt, kunt u het formuliertype weglaten in het element
<form>
en het type opgeven in een container.
-
-
Klik op Save.
-
Voeg de formulierelementen in.
Als u bijvoorbeeld een invoerveld wilt invoegen, gebruikt u het element
<input>
. Stel het kenmerkxpath
in op de veldverwijzing als een XPath-expressie. Meer informatie.In dit voorbeeld worden invoervelden weergegeven op basis van het schema
nms:recipient
.code language-xml <input xpath="@firstName"/> <input xpath="@lastName"/>
-
Als het formulier is gebaseerd op een specifiek schematype, kunt u de velden voor dit schema opzoeken:
-
Klik op Insert > Document fields .
-
Selecteer het veld en klik op OK .
-
-
Geef desgewenst de veldeditor op.
Een standaardeditor voor velden wordt aan elk gegevenstype gekoppeld:
- Voor een datumveld wordt in het formulier een invoerkalender weergegeven.
- Voor een veld van het type opsomming wordt in het formulier een selectielijst weergegeven.
U kunt de volgende veldeditortypen gebruiken:
table 0-row-2 1-row-2 2-row-2 3-row-2 Veldeditor Formulierkenmerk Keuzerondje type="radiobutton"
Selectievakje type="checkbox"
Boomstructuur bewerken type="tree"
Lees meer over controles van de geheugenlijst.
-
U kunt ook toegang tot de velden definiëren:
table 0-row-3 1-row-3 2-row-3 3-row-3 Element Kenmerk Beschrijving <input>
read-only="true"
Biedt alleen-lezen toegang tot een veld <container>
type="visibleGroup" visibleIf="
uitgeven-expr"
Hiermee geeft u een groep velden voorwaardelijk weer <container>
type="enabledGroup" enabledIf="
uitgeven-expr"
Hiermee wordt een groep velden voorwaardelijk ingeschakeld Voorbeeld:
code language-xml <container type="enabledGroup" enabledIf="@gender=1"> […] </container> <container type="enabledGroup" enabledIf="@gender=2"> […] </container>
-
U kunt containers ook gebruiken om velden te groeperen in secties.
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>
Een formulier met meerdere pagina's maken create-multipage-form
U kunt formulieren met meerdere pagina's maken. U kunt formulieren ook nesten binnen andere formulieren.
Een iconbox
-formulier maken
Met het iconbox
-formuliertype geeft u pictogrammen weer links van het formulier. Hiermee gaan gebruikers naar verschillende pagina's in het formulier.
Ga als volgt te werk als u het type van een bestaand formulier wilt wijzigen in iconbox
:
-
Wijzig het kenmerk
type
van het element<form>
iniconbox
:code language-xml <form […] type="iconbox">
-
Stel een container in voor elke formulierpagina:
-
Voeg een element
<container>
toe als een onderliggend element van het element<form>
. -
Als u een label en een afbeelding voor het pictogram wilt definiëren, gebruikt u de kenmerken
label
enimg
.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>
U kunt ook het kenmerk
type="frame"
verwijderen uit de bestaande<container>
-elementen. -
Een laptopformulier maken
Gebruik het notebook
-formuliertype om tabbladen boven aan het formulier weer te geven. Hiermee gaan gebruikers naar verschillende pagina's.
Ga als volgt te werk als u het type van een bestaand formulier wilt wijzigen in notebook
:
-
Wijzig het kenmerk
type
van het element<form>
innotebook
:code language-xml <form […] type="notebook">
-
Voeg een container toe voor elke formulierpagina:
- Voeg een element
<container>
toe als een onderliggend element van het element<form>
. - Gebruik de kenmerken
label
enimg
om het label en de afbeelding voor het pictogram te definiëren.
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>
U kunt ook het kenmerk
type="frame"
verwijderen uit de bestaande<container>
-elementen. - Voeg een element
Formulieren nesten
U kunt formulieren nesten binnen andere formulieren. U kunt bijvoorbeeld laptopformulieren nesten in iconbox-formulieren.
Het niveau van het nesten controleert navigatie. Gebruikers kunnen naar subformulieren gaan.
Als u een formulier in een ander formulier wilt nesten, voegt u een <container>
-element in en stelt u het type
-kenmerk in op het formuliertype. Voor het formulier op het hoogste niveau kunt u het formuliertype instellen in een buitencontainer of in het element <form>
.
Voorbeeld
In dit voorbeeld wordt een complex formulier getoond:
-
De vorm op hoofdniveau is een iconbox-vorm. Deze vorm bestaat uit twee containers geëtiketteerd Algemeen en Details.
Dientengevolge, toont de buitenvorm de Algemene en Details pagina's op het hoogste niveau. Gebruikers kunnen deze pagina's openen door op de pictogrammen links van het formulier te klikken.
-
Het subform is een notitieboekjevorm die binnen de Algemene container wordt genest. Het subform bestaat uit twee containers die Naam en Contact worden geëtiketteerd.
<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>
Dientengevolge, toont de Algemene pagina van de buitenvorm de Naam en de lusjes van het Contact.
Als u een formulier in een ander formulier wilt nesten, voegt u een <container>
-element in en stelt u het type
-kenmerk in op het formuliertype. Voor het formulier op het hoogste niveau kunt u het formuliertype instellen in een buitencontainer of in het element <form>
.
Voorbeeld
In dit voorbeeld wordt een complex formulier getoond:
-
De vorm op hoofdniveau is een iconbox-vorm. Deze vorm bestaat uit twee containers geëtiketteerd Algemeen en Details.
Dientengevolge, toont de buitenvorm de Algemene en Details pagina's op het hoogste niveau. Gebruikers kunnen deze pagina's openen door op de pictogrammen links van het formulier te klikken.
-
Het subform is een notitieboekjevorm die binnen de Algemene container wordt genest. Het subform bestaat uit twee containers die Naam en Contact worden geëtiketteerd.
<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>
Dientengevolge, toont de Algemene pagina van de buitenvorm de Naam en de lusjes van het Contact.
Een fabrieksinvoerformulier wijzigen modify-factory-form
Voer de volgende stappen uit om een fabrieksformulier te wijzigen:
-
Het fabrieksinvoerformulier wijzigen:
- Kies in het menu Administration > Configuration > Input forms .
- Selecteer een invoerformulier en wijzig dit.
U kunt schema's met fabrieksgegevens uitbreiden, maar u kunt geen formulieren met fabrieksinvoer uitbreiden. We raden u aan fabrieksinvoerformulieren rechtstreeks te wijzigen zonder ze opnieuw te maken. Tijdens software-upgrades worden uw wijzigingen in de fabrieksinvoerformulieren samengevoegd met de upgrades. Als het automatisch samenvoegen mislukt, kunt u de conflicten oplossen. Meer informatie.
Als u bijvoorbeeld een fabrieksschema met een extra veld uitbreidt, kunt u dit veld toevoegen aan het gerelateerde fabrieksformulier.
Formulieren valideren validate-forms
U kunt validatiecontroles opnemen in formulieren.
Alleen-lezen toegang verlenen tot velden
Gebruik het attribuut readOnly="true"
om alleen-lezen toegang tot een veld te verlenen. U kunt bijvoorbeeld de primaire sleutel van een record weergeven, maar dan met alleen-lezen toegang. Meer informatie.
In dit voorbeeld wordt de primaire sleutel (iRecipientId
) van het nms:recipient
-schema weergegeven in alleen-lezen toegang:
<value xpath="@iRecipientId" readOnly="true"/>
Verplichte velden controleren
U kunt verplichte gegevens controleren:
- Gebruik het kenmerk
required="true"
voor de vereiste velden. - Gebruik het knooppunt
<leave>
om deze velden te controleren en foutberichten weer te geven.
In dit voorbeeld is het e-mailadres vereist en wordt een foutbericht weergegeven als de gebruiker deze informatie niet heeft opgegeven:
<input xpath="@email" required="true"/>
<leave>
<check expr="@email!=''">
<error>The email address is required.</error>
</check>
</leave>
Lees meer over uitdrukkingsgebiedenen vormcontext.
Waarden valideren
U kunt JavaScript-SOAP gebruiken om formuliergegevens te valideren vanuit de Console. Gebruik deze aanroepen voor complexe validatie, bijvoorbeeld om een waarde te controleren op basis van een lijst met toegestane waarden. Meer informatie.
-
Maak een validatiefunctie in een JS-bestand.
Voorbeeld:
code language-js function nms_recipient_checkValue(value) { logInfo("checking value " + value) if (…) { logError("Value " + value + " is not valid") } return 1 }
In dit voorbeeld heeft de functie de naam
checkValue
. Deze functie wordt gebruikt om het gegevenstyperecipient
in de naamruimtenms
te controleren. De waarde die wordt gecontroleerd wordt geregistreerd. Als de waarde niet geldig is, wordt een foutbericht geregistreerd. Als de waarde geldig is, wordt de waarde 1 geretourneerd.U kunt de geretourneerde waarde gebruiken om het formulier te wijzigen.
-
Voeg in het formulier het element
<soapCall>
toe aan het element<leave>
.In dit voorbeeld wordt een SOAP aanroep gebruikt om de tekenreeks
@valueToCheck
te valideren:code language-xml <form name="recipient" (…)> (…) <leave> <soapCall name="checkValue" service="nms:recipient"> <param exprIn="@valueToCheck" type="string"/> </soapCall> </leave> </form>
In dit voorbeeld worden de methode
checkValue
en de servicenms:recipient
gebruikt:- De dienst is namespace en het gegevenstype.
- De methode is de functienaam. De naam is hoofdlettergevoelig.
De vraag wordt uitgevoerd synchroon.
Alle uitzonderingen worden weergegeven. Als u het element
<leave>
gebruikt, kunnen gebruikers het formulier pas opslaan nadat de ingevoerde gegevens zijn gevalideerd.
In dit voorbeeld wordt getoond hoe u serviceaanroepen kunt uitvoeren vanuit formulieren:
<enter>
<soapCall name="client" service="c4:ybClient">
<param exprIn="@id" type="string"/>
<param type="boolean" xpathOut="/tmp/@count"/>
</soapCall>
</enter>
In dit voorbeeld is de invoer een id, die een primaire sleutel is. Wanneer gebruikers het formulier voor deze id invullen, wordt een SOAP aanroep met deze id uitgevoerd als invoerparameter. De uitvoer is een Booleaanse waarde die naar dit veld wordt geschreven: /tmp/@count
. U kunt deze Booleaanse waarde in het formulier gebruiken. Lees meer over vormcontext.