[Gilt auch für v8]{class="badge positive" title="Gilt auch für Campaign v8"}
Bearbeiten von Formularen editing-forms
Übersicht
Marketer und Operatoren 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 Formulare erstellen und ändern:
- Sie können die werkseitigen Eingabeformulare ändern, die standardmäßig bereitgestellt werden. Die werkseitigen Eingabeformulare basieren auf den werkseitigen Datenschemata.
- Sie können benutzerdefinierte Eingabeformulare erstellen, die auf von Ihnen definierten Datenschemata basieren.
Forms sind Entitäten xtk:form
Typs. Sie können die Struktur des Eingabeformulars im xtk:form
-Schema anzeigen. Um dieses Schema anzuzeigen, wählen Sie Administration > Konfiguration > Datenschemata aus dem Menü aus. Weitere Informationen über Formularstruktur.
Um auf Eingabeformulare zuzugreifen, wählen Sie Administration > Konfiguration > Eingabeformulare aus dem Menü:
Um Formulare zu entwerfen, bearbeiten Sie den XML-Inhalt im XML-Editor:
Um ein Formular in der Vorschau anzuzeigen, klicken Sie auf die Vorschau:
Formulartypen
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 diesen Anwendungsfall.
-
Assistent
Dieses Formular umfasst mehrere unverankerte Bildschirme, die in einer bestimmten Reihenfolge angeordnet sind. Benutzer navigieren von einem Bildschirm zum nächsten. Weitere Informationen
-
Iconbox
Dieses Formular umfasst mehrere Seiten. Um im Formular zu navigieren, klicken Benutzer auf die Symbole links neben dem Formular.
-
Notebook
Dieses Formular umfasst mehrere Seiten. Um im Formular zu navigieren, wählen Benutzer Registerkarten oben im Formular aus.
-
Vertikale Trennung
Dieses Formular zeigt einen Navigationsbaum an.
-
Horizontale Trennung
Dieses Formular zeigt eine Liste von Elementen an.
Container
In Formularen können Sie Container für verschiedene Zwecke verwenden:
- Organisieren von Inhalten in Formularen
- Definieren des Zugriffs auf Eingabefelder
- Verschachteln von Formularen in anderen Formularen
Inhalt organisieren
Verwenden von Containern zum Organisieren von Inhalten in Formularen:
- Sie können Felder in Abschnitten gruppieren.
- Sie können Seiten zu mehrseitigen Formularen hinzufügen.
Verwenden Sie zum Einfügen eines Containers das <container>
. Weitere Informationen
Felder gruppieren
Verwenden Sie Container, um Eingabefelder in strukturierte Abschnitte zu gruppieren.
Um einen Abschnitt in ein Formular einzufügen, verwenden Sie dieses Element: <container type="frame">
. Um optional einen Abschnittstitel hinzuzufügen, verwenden Sie das Attribut label
.
Syntax: <container type="frame" label="
section_title"> […] </container>
In diesem Beispiel definiert ein Container den Abschnitt Erstellung, der die Eingabefelder Erstellt von und Name umfasst:
<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>
Hinzufügen von Seiten zu mehrseitigen Formularen
Verwenden Sie für mehrseitige Formulare einen Container , um eine Formularseite zu erstellen.
Dieses Beispiel zeigt Container für die Seiten Allgemein und Details eines Formulars:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
Zugriff auf Felder definieren
Verwenden Sie Container, um zu definieren, was sichtbar ist, und um den Zugriff auf Felder zu definieren. Sie können Feldergruppen aktivieren oder deaktivieren.
Verschachteln von Formularen
Verwenden Sie Container, um Formulare in anderen Formularen zu verschachteln. Weitere Informationen
Verweise auf Bilder
Um Bilder zu finden, wählen Sie Administration > Konfiguration > Bilder aus dem Menü aus.
Um ein Bild mit einem Element im Formular zu verknüpfen, z. B. mit einem Symbol, können Sie einen Verweis auf ein Bild hinzufügen. Verwenden Sie das img
-Attribut beispielsweise im <container>
.
Syntax: img="
namespace
:
filename
.
extension
"
Dieses Beispiel zeigt Verweise auf die book.png
und detail.png
Bilder aus dem 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:
Einfaches Formular erstellen create-simple-form
Gehen Sie wie folgt vor, um ein Formular zu erstellen:
-
Wählen Sie im Menü Administration > Konfiguration > Formulare.
-
Klicken Sie oben rechts in Liste auf „Neu“.
-
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 das
cus:order
Datenschema:code language-xml <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
angeben.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>
-
Geben Sie den Titel an, der auf dem 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>
auslassen und den Typ in einem Container angeben.
-
-
Klicken Sie auf Speichern.
-
Fügen Sie die Formularelemente ein.
Um beispielsweise ein Eingabefeld einzufügen, verwenden Sie das
<input>
. Legen Sie dasxpath
-Attribut als XPath-Ausdruck auf den Feldverweis fest. Weitere InformationenDieses Beispiel zeigt Eingabefelder, die auf dem
nms:recipient
basieren.code language-xml <input xpath="@firstName"/> <input xpath="@lastName"/>
-
Wenn das Formular auf einem bestimmten Schematyp basiert, können Sie die Felder für dieses Schema nachschlagen:
-
Klicken Sie Einfügen > Dokumentfelder.
-
Wählen Sie das Feld aus und klicken Sie auf OK.
-
-
Geben Sie optional den Feldeditor an.
Jedem Datentyp ist ein Standardeditor für Felder zugeordnet:
- Für ein Feld vom Typ Datum zeigt das Formular einen Eingabekalender an.
- Für ein Feld vom Typ Auflistung zeigt das Formular eine Auswahlliste an.
Sie können die folgenden Typen von Feldeditoren verwenden:
table 0-row-2 1-row-2 2-row-2 3-row-2 Feld-Editor Formularattribut Radiobutton type="radiobutton"
Kontrollkästchen type="checkbox"
Baum bearbeiten type="tree"
Lesen Sie mehr über Eingabefeld mit Speicherliste.
-
Definieren Sie optional den Zugriff auf die Felder:
table 0-row-3 1-row-3 2-row-3 3-row-3 Element Attribut Beschreibung <input>
read-only="true"
Bietet schreibgeschützten Zugriff auf ein Feld <container>
type="visibleGroup" visibleIf="
edit-expr"
Zeigt bedingt eine Gruppe von Feldern an <container>
type="enabledGroup" enabledIf="
edit-expr"
Bedingte Aktivierung einer Feldergruppe Beispiel:
code language-xml <container type="enabledGroup" enabledIf="@gender=1"> […] </container> <container type="enabledGroup" enabledIf="@gender=2"> […] </container>
-
Verwenden Sie optional Container, um Felder in Abschnitte zu gruppieren.
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>
Erstellen eines mehrseitigen Formulars create-multipage-form
Sie können mehrseitige Formulare erstellen. Sie können Formulare auch in anderen Formularen verschachteln.
Erstellen eines iconbox
Formulars
Verwenden Sie den iconbox
Formulartyp, um Symbole auf der linken Seite des Formulars anzuzeigen, über die Benutzende zu verschiedenen Seiten im Formular gelangen.
Gehen Sie wie folgt vor, um den Typ eines vorhandenen Formulars in iconbox
zu ändern:
-
Ändern Sie das
type
des<form>
Elements iniconbox
:code language-xml <form […] type="iconbox">
-
Legen Sie einen Container für jede Formularseite fest:
-
Fügen Sie ein
<container>
Element als untergeordnetes Element des<form>
Elements hinzu. -
Um eine Beschriftung und ein Bild für das Symbol zu definieren, verwenden Sie die Attribute
label
undimg
.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>
Alternativ können Sie das
type="frame"
-Attribut aus den vorhandenen<container>
entfernen. -
Notebook-Formular erstellen
Verwenden Sie den notebook
Formulartyp, um Registerkarten oben im Formular anzuzeigen, über die Benutzende zu verschiedenen Seiten gelangen.
Gehen Sie wie folgt vor, um den Typ eines vorhandenen Formulars in notebook
zu ändern:
-
Ändern Sie das
type
des<form>
Elements innotebook
:code language-xml <form […] type="notebook">
-
Fügen Sie für jede Formularseite einen Container hinzu:
- Fügen Sie ein
<container>
Element als untergeordnetes Element des<form>
Elements hinzu. - Um die Beschriftung und das Bild für das Symbol zu definieren, verwenden Sie die Attribute
label
undimg
.
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>
Alternativ können Sie das
type="frame"
-Attribut aus den vorhandenen<container>
entfernen. - Fügen Sie ein
Verschachteln von Formularen
Sie können Formulare in anderen Formularen verschachteln. Sie können beispielsweise Notebook-Formulare in iconbox-Formularen verschachteln.
Die Verschachtelungsebene steuert die Navigation. Benutzer können einen Drilldown in Teilformulare durchführen.
Um ein Formular in einem anderen Formular zu verschachteln, fügen Sie ein <container>
ein und legen Sie das Attribut type
auf den Formulartyp fest. Für das Formular der obersten Ebene können Sie den Formulartyp in einem äußeren Container oder im <form>
festlegen.
Beispiel
Dieses Beispiel zeigt ein komplexes Formular:
-
Das Formular der obersten Ebene ist ein Formular für Symbolboxen. Dieses Formular enthält zwei Container mit der Beschriftung Allgemein und Details.
Daher zeigt das äußere Formular die Seiten Allgemein und Details auf der obersten Ebene an. Um auf diese Seiten zuzugreifen, klicken Benutzer auf die Symbole links im Formular.
-
Das Teilformular ist ein Notebook-Formular, das im Container Allgemein verschachtelt ist. 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 werden auf der Seite Allgemein des äußeren Formulars die Registerkarten Name und Kontakt angezeigt.
Um ein Formular in einem anderen Formular zu verschachteln, fügen Sie ein <container>
ein und legen Sie das Attribut type
auf den Formulartyp fest. Für das Formular der obersten Ebene können Sie den Formulartyp in einem äußeren Container oder im <form>
festlegen.
Beispiel
Dieses Beispiel zeigt ein komplexes Formular:
-
Das Formular der obersten Ebene ist ein Formular für Symbolboxen. Dieses Formular enthält zwei Container mit der Beschriftung Allgemein und Details.
Daher zeigt das äußere Formular die Seiten Allgemein und Details auf der obersten Ebene an. Um auf diese Seiten zuzugreifen, klicken Benutzer auf die Symbole links im Formular.
-
Das Teilformular ist ein Notebook-Formular, das im Container Allgemein verschachtelt ist. 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 werden auf der Seite Allgemein des äußeren Formulars die Registerkarten Name und Kontakt angezeigt.
Ändern eines werkseitigen Eingabeformulars modify-factory-form
Gehen Sie wie folgt vor, um ein Factory-Formular zu ändern:
-
Ändern des werkseitigen Eingabeformulars:
- Wählen Sie im Menü Administration > Konfiguration > Formulare.
- Wählen Sie ein Eingabeformular aus und ändern Sie es.
Sie können Factory-Datenschemata erweitern, aber nicht Factory-Eingabeformulare. Es wird empfohlen, die werkseitigen Eingabeformulare direkt zu ändern, ohne sie neu zu erstellen. Bei Software-Upgrades werden Ihre Änderungen in den werkseitigen Eingabeformularen mit den Upgrades zusammengeführt. Wenn die automatische Zusammenführung fehlschlägt, können Sie die Konflikte auflösen. Weitere Informationen
Wenn Sie beispielsweise ein Factory-Schema mit einem zusätzlichen Feld erweitern, können Sie dieses Feld dem zugehörigen Factory-Formular hinzufügen.
Formulare validieren validate-forms
Sie können Validierungssteuerelemente in Formulare einbeziehen.
Nur-Lese-Zugriff auf Felder gewähren
Um schreibgeschützten Zugriff auf ein Feld zu gewähren, verwenden Sie das Attribut readOnly="true"
. Beispiel: Sie möchten den Primärschlüssel eines Datensatzes anzeigen, jedoch mit schreibgeschütztem Zugriff. Weitere Informationen
In diesem Beispiel wird der Primärschlüssel (iRecipientId
) des nms:recipient
Schemas im schreibgeschützten Zugriff angezeigt:
<value xpath="@iRecipientId" readOnly="true"/>
Pflichtfelder überprüfen
Sie können die obligatorischen Informationen überprüfen:
- Verwenden Sie das Attribut
required="true"
für die erforderlichen Felder. - Verwenden Sie den Knoten
<leave>
, um diese Felder zu überprüfen und Fehlermeldungen anzuzeigen.
In diesem Beispiel ist die E-Mail-Adresse erforderlich und eine Fehlermeldung wird angezeigt, wenn der Benutzer diese Informationen nicht bereitgestellt hat:
<input xpath="@email" required="true"/>
<leave>
<check expr="@email!=''">
<error>The email address is required.</error>
</check>
</leave>
Lesen Sie mehr über Ausdrucksfelder und Formularkontext.
Validieren von Werten
Sie können JavaScript SOAP-Aufrufe verwenden, um Formulardaten in der Konsole zu überprüfen. Verwenden Sie diese Aufrufe für eine komplexe Validierung, z. B. um einen Wert mit einer Liste autorisierter Werte zu vergleichen. Weitere Informationen
-
Erstellen Sie eine Validierungsfunktion in einer JS-Datei.
Beispiel:
code language-js function nms_recipient_checkValue(value) { logInfo("checking value " + value) if (…) { logError("Value " + value + " is not valid") } return 1 }
In diesem Beispiel trägt die Funktion den Namen
checkValue
. Mit dieser Funktion wird derrecipient
Datentyp imnms
-Namespace überprüft. Der zu überprüfende Wert wird protokolliert. Wenn der Wert ungü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 das
<soapCall>
Element zum<leave>
Element hinzu.In diesem Beispiel wird ein SOAP-Aufruf verwendet, um die
@valueToCheck
Zeichenfolge zu validieren:code language-xml <form name="recipient" (…)> (…) <leave> <soapCall name="checkValue" service="nms:recipient"> <param exprIn="@valueToCheck" type="string"/> </soapCall> </leave> </form>
In diesem Beispiel werden die
checkValue
-Methode und dernms:recipient
-Service verwendet:- Der Service ist der Namespace und der Datentyp.
- Die Methode ist der Funktionsname. Beim Namen wird zwischen Groß- und Kleinschreibung unterschieden.
Der Aufruf erfolgt synchron.
Alle Ausnahmen werden angezeigt. Wenn Sie das
<leave>
verwenden, können Benutzer das Formular erst speichern, nachdem die eingegebenen Informationen validiert wurden.
Dieses Beispiel zeigt, wie Sie Service-Aufrufe 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, bei der es sich um einen Primärschlüssel handelt. Wenn Benutzende 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 im Formular verwenden. Weitere Informationen über Formularkontext.