Bearbeiten von Formularen

Überblick

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:

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

Mehr dazu

Klicken Sie auf die Schaltfläche Vorschau tab:

Formulartypen

Sie können verschiedene Arten von Eingabeformularen erstellen. Der Formulartyp bestimmt, wie Benutzer im Formular navigieren:

  • Konsolenbildschirm

    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. Mehr dazu

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

  • Vertikaler Bereich

    Dieses Formular zeigt eine Navigationsstruktur.

  • Horizontaler Bereich

    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
  • Zugriff auf Eingabefelder definieren
  • Verschachteln von Formularen in anderen Formularen

Mehr dazu

Inhalt organisieren

Verwenden Sie Container zum Organisieren von Inhalten in Formularen:

  • Sie können Felder in Abschnitten gruppieren.
  • Sie können mehrseitigen Formularen Seiten hinzufügen.

Verwenden Sie zum Einfügen eines Containers die <container> -Element. Mehr dazu

Gruppenfelder

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>

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 Allgemein und Details Seiten 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 Gruppen von Feldern aktivieren oder deaktivieren.

Verschachteln von Formularen

Verwenden Sie Container zum Verschachteln von Formularen in anderen Formularen. Mehr dazu

Verweise auf Bilder

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:

Einfaches Formular erstellen

Gehen Sie wie folgt vor, um ein Formular zu erstellen:

  1. Wählen Sie im Menü Administration > Konfiguration > Formulare.

  2. Klicken Sie auf Neu rechts oben in der Liste.

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

  4. Klicken Sie auf Speichern.

  5. 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. Mehr dazu

    Dieses Beispiel zeigt Eingabefelder, die auf dem nms:recipient Schema.

    <input xpath="@firstName"/>
    <input xpath="@lastName"/>
    
  6. Wenn das Formular auf einem bestimmten Schematyp basiert, können Sie die Felder für dieses Schema nachschlagen:

    1. Klicken Einfügen > Dokumentfelder.

    2. Wählen Sie das Feld aus und klicken Sie auf OK.

  7. Geben Sie optional den Feld-Editor an.

    Jedem Datentyp ist ein standardmäßiger Feldeditor zugeordnet:

    • Bei einem Feld vom Typ Datum zeigt das Formular einen Eingabekalender an.
    • Bei einem Auflistungsfeld zeigt das Formular eine Auswahlliste an.

    Sie können die folgenden Editor-Typen für Felder verwenden:

    Feldeditor Formularattribut
    Radiobutton type="radiobutton"
    Checkbox type="checkbox"
    Bearbeitungsstruktur type="tree"

    Mehr dazu Speicherlistensteuerelemente.

  8. 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>
    
  9. 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>
    

Mehrseitige Formulare erstellen

Sie können mehrseitige Formulare erstellen. Sie können Formulare auch in anderen Formularen verschachteln.

Erstellen Sie eine iconbox Formular

Verwenden 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 iconboxführen Sie die folgenden Schritte aus:

  1. Ändern Sie die type -Attribut <form> Element zu iconbox:

    <form […] type="iconbox">
    
  2. Legen Sie für jede Formularseite einen Container fest:

    1. Hinzufügen einer <container> -Element als untergeordnetes Element des <form> -Element.

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

Notebook-Formular erstellen

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 notebookführen Sie die folgenden Schritte aus:

  1. Ändern Sie die type -Attribut <form> Element zu notebook:

    <form […] type="notebook">
    
  2. Fügen Sie für jede Formularseite einen Container hinzu:

    1. Hinzufügen einer <container> -Element als untergeordnetes Element des <form> -Element.
    2. Um den Titel und das Bild für das Symbol zu definieren, verwenden Sie die 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.

Verschachteln von Formularen

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.

Beispiel

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

Beispiel

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 Allgemein -Seite des äußeren Formulars zeigt die Name und Kontakt Registerkarten.

Ändern eines Factory-Eingabeformulars

Gehen Sie wie folgt vor, um ein Factory-Formular zu ändern:

  1. Ändern Sie das Factory-Eingabeformular:

    1. Wählen Sie im Menü Administration > Konfiguration > Formulare.
    2. Wählen Sie ein Formular aus und ändern Sie es.

    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. Mehr dazu

    Wenn Sie beispielsweise ein Factory-Schema mit einem zusätzlichen Feld erweitern, können Sie dieses Feld zum zugehörigen Factory-Formular hinzufügen.

Formulare überprüfen

Sie können Überprüfungssteuerelemente in Formulare aufnehmen.

Schreibgeschützten Zugriff auf Felder gewähren

Um Lesezugriff auf ein Feld zu gewähren, verwenden Sie die readOnly="true" -Attribut. Beispielsweise können Sie den Primärschlüssel eines Datensatzes anzeigen, jedoch mit schreibgeschütztem Zugriff. Mehr dazu

In diesem Beispiel wird der Primärschlüssel (iRecipientId) nms:recipient Schema wird in schreibgeschütztem Zugriff angezeigt:

<value xpath="@iRecipientId" readOnly="true"/>

Pflichtfelder aktivieren

Sie können obligatorische Informationen überprüfen:

  • Verwenden Sie die required="true" -Attribut für die erforderlichen Felder.
  • Verwenden Sie die <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.

Werte überprüfen

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. Mehr dazu

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

  2. 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 Dienst ist der Namespace und der Datentyp.
    • Die Methode ist der Funktionsname. Beim Namen wird zwischen Groß- und Kleinschreibung unterschieden.

    Der Aufruf wird synchron ausgeführt.

    Alle Ausnahmen werden angezeigt. Wenn Sie <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.

Auf dieser Seite