Marketer und Benutzer verwenden Eingabeformulare, um Datensätze zu erstellen, zu ändern und in der Vorschau anzuzeigen. Forms zeigt eine visuelle Darstellung von Informationen an.
Sie können Eingabeformulare erstellen und ändern:
Forms sind Entitäten von xtk:form
Typ. Sie können die Struktur des Eingabeformulars im xtk:form
Schema. Um dieses Schema anzuzeigen, wählen Sie Administration > Konfiguration > Datenschemata aus dem Menü. Mehr dazu Formularstruktur.
Um auf Eingabeformulare zuzugreifen, wählen Sie Administration > Konfiguration > Formulare aus dem Menü:
Um Formulare zu entwerfen, bearbeiten Sie den XML-Inhalt im XML-Editor:
Um eine Vorschau eines Formulars anzuzeigen, klicken Sie auf das Vorschau tab:
Sie können verschiedene Arten von Eingabeformularen erstellen. Der Formulartyp bestimmt, wie Benutzer im Formular navigieren:
Konsolen-Bildschirm
Dies ist der Standardformulartyp. Das Formular besteht aus einer einzelnen Seite.
Content-Management
Verwenden Sie diesen Formulartyp für das Content Management. Siehe dies Anwendungsfall.
Assistent
Dieses Formular umfasst mehrere schwebende Bildschirme, die in einer bestimmten Sequenz angeordnet sind. Benutzer navigieren von einem Bildschirm zum nächsten. Weitere Informationen
Iconbox
Dieses Formular umfasst mehrere Seiten. Um durch das Formular zu navigieren, wählen Benutzer auf der linken Seite des Formulars Symbole aus.
Notebook
Dieses Formular umfasst mehrere Seiten. Um durch das Formular zu navigieren, wählen Benutzer Registerkarten oben im Formular aus.
Vertikale Trennung
Dieses Formular zeigt eine Navigationsstruktur.
Horizontale Trennung
Dieses Formular zeigt eine Liste von Elementen an.
In Formularen können Sie Container für verschiedene Zwecke verwenden:
Verwenden Sie Container zum Organisieren von Inhalten in Formularen:
Verwenden Sie zum Einfügen eines Containers die <container>
-Element. Weitere Informationen
Verwenden Sie Container, um Eingabefelder in organisierte Abschnitte zu gruppieren.
Verwenden Sie dieses Element, um einen Abschnitt in ein Formular einzufügen: <container type="frame">
. Wenn Sie optional einen Abschnittstitel hinzufügen möchten, verwenden Sie die label
-Attribut.
Syntax: <container type="frame" label="
section_title"> […] </container>
In diesem Beispiel definiert ein Container die Erstellung -Abschnitt, der die Erstellt von und Name Eingabefelder:
<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>
Verwenden Sie für mehrseitige Formulare einen Container, um eine Formularseite zu erstellen.
Dieses Beispiel zeigt Container für Allgemein und Details Formularseiten:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
Verwenden Sie Container, um zu definieren, was sichtbar ist, und um den Zugriff auf Felder zu definieren. Sie können Gruppen von Feldern aktivieren oder deaktivieren.
Verwenden Sie Container zum Verschachteln von Formularen in anderen Formularen. Weitere Informationen
Um Bilder zu suchen, wählen Sie Administration > Konfiguration > Bilder aus dem Menü.
Um ein Bild mit einem Element im Formular zu verknüpfen, z. B. einem Symbol, können Sie einem Bild einen Verweis hinzufügen. Verwenden Sie die img
-Attribut, beispielsweise im <container>
-Element.
Syntax: img="
namespace
:
filename
.
extension
"
Dieses Beispiel zeigt Verweise auf die book.png
und detail.png
Bilder aus ncm
namespace:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
Diese Bilder werden für Symbole verwendet, auf die Benutzer klicken, um in einem mehrseitigen Formular zu navigieren:
Gehen Sie wie folgt vor, um ein Formular zu erstellen:
Wählen Sie im Menü Administration > Konfiguration > Formulare.
Klicken Sie auf Neu rechts oben in der Liste.
Geben Sie die Formulareigenschaften an:
Geben Sie den Formularnamen und den Namespace an.
Der Formularname und der Namespace können mit dem zugehörigen Datenschema übereinstimmen. Dieses Beispiel zeigt ein Formular für die cus:order
Datenschema:
<form entitySchema="xtk:form" img="xtk:form.png" label="Order" name="order" namespace="cus" type="iconbox" xtkschema="xtk:form">
[…]
</form>
Alternativ können Sie das Datenschema explizit im entity-schema
-Attribut.
<form entity-schema="cus:stockLine" entitySchema="xtk:form" img="xtk:form.png" label="Stock order" name="stockOrder" namespace="cus" xtkschema="xtk:form">
[…]
</form>
Geben Sie den Titel an, der im Formular angezeigt werden soll.
Geben Sie optional den Formulartyp an. Wenn Sie keinen Formulartyp angeben, wird standardmäßig der Konsolenbildschirmtyp verwendet.
Wenn Sie ein mehrseitiges Formular entwerfen, können Sie den Formulartyp im <form>
-Element und geben Sie den Typ in einem Container an.
Klicken Sie auf Speichern.
Fügen Sie die Formularelemente ein.
Um beispielsweise ein Eingabefeld einzufügen, verwenden Sie die <input>
-Element. Legen Sie die xpath
-Attribut der Feldreferenz als XPath-Ausdruck zuweisen. Weitere Informationen
Dieses Beispiel zeigt Eingabefelder, die auf dem nms:recipient
Schema.
<input xpath="@firstName"/>
<input xpath="@lastName"/>
Wenn das Formular auf einem bestimmten Schematyp basiert, können Sie die Felder für dieses Schema nachschlagen:
Klicks Einfügen > Dokumentfelder.
Wählen Sie das Feld aus und klicken Sie auf OK.
Geben Sie optional den Feld-Editor an.
Jedem Datentyp ist ein standardmäßiger Feldeditor zugeordnet:
Sie können die folgenden Editor-Typen für Felder verwenden:
Feld-Editor | Formularattribut |
---|---|
Radiobutton | type="radiobutton" |
Checkbox | type="checkbox" |
Bearbeitungsstruktur | type="tree" |
Mehr dazu Speicherlistensteuerelemente.
Definieren Sie optional den Zugriff auf die Felder:
Element | Attribut | Beschreibung |
---|---|---|
<input> |
read-only="true" |
Ermöglicht schreibgeschützten Zugriff auf ein Feld |
<container> |
type="visibleGroup" visibleIf=" edit-expr" |
Zeigt eine Feldergruppe bedingt an |
<container> |
type="enabledGroup" enabledIf=" edit-expr" |
Bedingte Aktivierung einer Feldergruppe |
Beispiel:
<container type="enabledGroup" enabledIf="@gender=1">
[…]
</container>
<container type="enabledGroup" enabledIf="@gender=2">
[…]
</container>
Verwenden Sie optional Container, um Felder in Abschnitte zu gruppieren.
<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>
Sie können mehrseitige Formulare erstellen. Sie können Formulare auch in anderen Formularen verschachteln.
iconbox
FormularVerwenden Sie die iconbox
Formulartyp zum Anzeigen von Symbolen auf der linken Seite des Formulars, über die Benutzer zu verschiedenen Seiten im Formular gelangen.
So ändern Sie den Typ eines vorhandenen Formulars in iconbox
führen Sie die folgenden Schritte aus:
Ändern Sie die type
-Attribut <form>
Element zu iconbox
:
<form […] type="iconbox">
Legen Sie für jede Formularseite einen Container fest:
Hinzufügen einer <container>
-Element als untergeordnetes Element des <form>
-Element.
Um eine Beschriftung und ein Bild für das Symbol zu definieren, verwenden Sie die label
und img
-Attribute.
<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>
Alternativ können Sie die type="frame"
-Attribut aus dem vorhandenen <container>
-Elemente.
Verwenden Sie die notebook
Formulartyp zum Anzeigen von Registerkarten oben im Formular, über die Benutzer zu verschiedenen Seiten gelangen.
So ändern Sie den Typ eines vorhandenen Formulars in notebook
führen Sie die folgenden Schritte aus:
Ändern Sie die type
-Attribut <form>
Element zu notebook
:
<form […] type="notebook">
Fügen Sie für jede Formularseite einen Container hinzu:
<container>
-Element als untergeordnetes Element des <form>
-Element.label
und img
-Attribute. <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>
Alternativ können Sie die type="frame"
-Attribut aus dem vorhandenen <container>
-Elemente.
Sie können Formulare in anderen Formularen verschachteln. Sie können beispielsweise Notebook-Formulare in iconbox-Formularen verschachteln.
Die Ebene der Verschachtelung steuert die Navigation. Benutzer können ein Drilldown zu Teilformularen durchführen.
Um ein Formular in einem anderen Formular zu verschachteln, fügen Sie eine <container>
-Element und legen Sie die type
dem Formulartyp zuordnen. Für Formulare der obersten Ebene können Sie den Formulartyp in einem äußeren Container oder im <form>
-Element.
Dieses Beispiel zeigt ein komplexes Formular:
Das Formular der obersten Ebene ist ein Iconbox-Formular. Dieses Formular umfasst zwei Behälter mit der Bezeichnung Allgemein und Details.
Daher zeigt das äußere Formular die Allgemein und Details Seiten auf der obersten Ebene. Um auf diese Seiten zuzugreifen, klicken Benutzer auf die Symbole links im Formular.
Das Teilformular ist ein Notebook-Formular, das innerhalb der Allgemein Container. Das Teilformular besteht aus zwei Containern mit der Beschriftung Name und 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>
Daher wird die Variable Allgemein -Seite des äußeren Formulars zeigt die Name und Kontakt Registerkarten.
Um ein Formular in einem anderen Formular zu verschachteln, fügen Sie eine <container>
-Element und legen Sie die type
dem Formulartyp zuordnen. Für Formulare der obersten Ebene können Sie den Formulartyp in einem äußeren Container oder im <form>
-Element.
Dieses Beispiel zeigt ein komplexes Formular:
Das Formular der obersten Ebene ist ein Iconbox-Formular. Dieses Formular umfasst zwei Behälter mit der Bezeichnung Allgemein und Details.
Daher zeigt das äußere Formular die Allgemein und Details Seiten auf der obersten Ebene. Um auf diese Seiten zuzugreifen, klicken Benutzer auf die Symbole links im Formular.
Das Teilformular ist ein Notebook-Formular, das innerhalb der Allgemein Container. Das Teilformular besteht aus zwei Containern mit der Beschriftung Name und 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>
Daher wird die Variable Allgemein -Seite des äußeren Formulars zeigt die Name und Kontakt Registerkarten.
Gehen Sie wie folgt vor, um ein Factory-Formular zu ändern:
Ändern Sie das Factory-Eingabeformular:
Sie können Factory-Datenschemata erweitern, Sie können jedoch keine Factory-Eingabeformulare erweitern. Es wird empfohlen, werksmäßige Eingabeformulare direkt zu ändern, ohne sie neu zu erstellen. Bei Softwareaktualisierungen werden Ihre Änderungen in den Werkseingangsformularen mit den Upgrades zusammengeführt. Wenn die automatische Zusammenführung fehlschlägt, können Sie die Konflikte lösen. Weitere Informationen
Wenn Sie beispielsweise ein Factory-Schema mit einem zusätzlichen Feld erweitern, können Sie dieses Feld zum zugehörigen Factory-Formular hinzufügen.
Sie können Überprüfungssteuerelemente in Formulare aufnehmen.
Verwenden Sie die readOnly="true"
-Attribut. Beispielsweise können Sie den Primärschlüssel eines Datensatzes anzeigen, jedoch mit schreibgeschütztem Zugriff. Weitere Informationen
In diesem Beispiel wird der Primärschlüssel (iRecipientId
) der nms:recipient
Schema wird in schreibgeschütztem Zugriff angezeigt:
<value xpath="@iRecipientId" readOnly="true"/>
Sie können obligatorische Informationen überprüfen:
required="true"
-Attribut für die erforderlichen Felder.<leave>
-Knoten, um diese Felder zu überprüfen und Fehlermeldungen anzuzeigen.In diesem Beispiel ist die E-Mail-Adresse erforderlich und es wird eine Fehlermeldung angezeigt, wenn der Benutzer diese Informationen nicht angegeben hat:
<input xpath="@email" required="true"/>
<leave>
<check expr="@email!=''">
<error>The email address is required.</error>
</check>
</leave>
Mehr dazu Ausdrucksfelder und Formularkontext.
Sie können JavaScript-SOAP-Aufrufe verwenden, um Formulardaten aus der Konsole zu überprüfen. Verwenden Sie diese Aufrufe zur komplexen Validierung, um beispielsweise einen Wert mit einer Liste zulässiger Werte zu vergleichen. Weitere Informationen
Erstellen Sie eine Validierungsfunktion in einer JS-Datei.
Beispiel:
function nms_recipient_checkValue(value)
{
logInfo("checking value " + value)
if (…)
{
logError("Value " + value + " is not valid")
}
return 1
}
In diesem Beispiel erhält die Funktion den Namen checkValue
. Mit dieser Funktion wird die recipient
Datentyp in der nms
Namespace. Der Wert, der überprüft wird, wird protokolliert. Wenn der Wert nicht gültig ist, wird eine Fehlermeldung protokolliert. Wenn der Wert gültig ist, wird der Wert 1 zurückgegeben.
Sie können den zurückgegebenen Wert verwenden, um das Formular zu ändern.
Fügen Sie im Formular die <soapCall>
-Element zu <leave>
-Element.
In diesem Beispiel wird ein SOAP-Aufruf verwendet, um die @valueToCheck
Zeichenfolge:
<form name="recipient" (…)>
(…)
<leave>
<soapCall name="checkValue" service="nms:recipient">
<param exprIn="@valueToCheck" type="string"/>
</soapCall>
</leave>
</form>
In diesem Beispiel wird die checkValue
und nms:recipient
-Dienst wird verwendet:
Der Aufruf wird synchron ausgeführt.
Alle Ausnahmen werden angezeigt. Wenn Sie die <leave>
-Element verwenden, können Benutzer das Formular erst dann speichern, wenn die eingegebenen Informationen validiert wurden.
Dieses Beispiel zeigt, wie Sie Dienstaufrufe in Formularen durchführen können:
<enter>
<soapCall name="client" service="c4:ybClient">
<param exprIn="@id" type="string"/>
<param type="boolean" xpathOut="/tmp/@count"/>
</soapCall>
</enter>
In diesem Beispiel ist die Eingabe eine ID, die ein Primärschlüssel ist. Wenn Benutzer das Formular für diese ID ausfüllen, wird ein SOAP-Aufruf mit dieser ID als Eingabeparameter durchgeführt. Die Ausgabe ist ein boolescher Wert, der in dieses Feld geschrieben wird: /tmp/@count
. Sie können diesen booleschen Wert innerhalb des Formulars verwenden. Mehr dazu Formularkontext.