マーケターやオペレーターは、入力フォームを使用して、レコードの作成、変更、プレビューをおこないます。 Formsは、情報を視覚的に表現します。
入力フォームを作成および変更できます。
Formsは xtk:form
タイプ。 入力フォームの構造は、 xtk:form
スキーマ。 このスキーマを表示するには、 管理 > 設定 > データスキーマ を選択します。 詳細を表示: フォーム構造.
入力フォームにアクセスするには、「 管理 > 設定 > 入力フォーム メニューから、次の操作を実行します。
フォームをデザインするには、XML エディターで XML コンテンツを編集します。
詳細情報。
フォームをプレビューするには、 プレビュー タブ:
様々なタイプの入力フォームを作成できます。 フォームの種類によって、ユーザーによるフォームのナビゲーション方法が決まります。
コンソール画面
これはデフォルトのフォームタイプです。 フォームは単一のページで構成されます。
コンテンツ管理
このフォームタイプをコンテンツ管理に使用します。 詳しくは、 使用例.
ウィザード
このフォームは、特定のシーケンスで並べられた複数のフローティングスクリーンで構成されます。 ユーザーは画面間を移動します。 詳細情報。
アイコンボックス
このフォームは複数のページで構成されます。 フォームに移動するには、フォームの左側でアイコンを選択します。
ノートブック
このフォームは複数のページで構成されます。 フォームに移動するには、フォーム上部のタブを選択します。
縦長ペイン
このフォームは、ナビゲーションツリーを表示します。
横長ペイン
このフォームは、項目のリストを表示します。
フォームでは、次のような様々な目的でコンテナを使用できます。
詳細情報。
コンテナを使用してフォーム内のコンテンツを整理する:
コンテナを挿入するには、 <container>
要素を選択します。 詳細情報。
コンテナを使用して、入力フィールドを整理されたセクションにグループ化します。
フォームにセクションを挿入するには、次の要素を使用します。 <container type="frame">
. (オプション)セクションタイトルを追加するには、 label
属性。
構文: <container type="frame" label="
section_title"> […] </container>
この例では、コンテナによって 作成 セクション ( 作成者 および 名前 入力フィールド:
<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>
複数ページフォームの場合は、コンテナを使用してフォームページを作成します。
この例では、 一般 および 詳細 フォームのページ:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
コンテナを使用して、表示内容を定義し、フィールドへのアクセスを定義します。 フィールドのグループのオン/オフを切り替えることができます。
コンテナを使用して、他のフォーム内にフォームをネストします。 詳細情報。
画像を検索するには、「 」を選択します。 管理 > 設定 > 画像 を選択します。
画像をフォーム内の要素(アイコンなど)に関連付けるには、画像への参照を追加します。 以下を使用します。 img
属性 ( 例: <container>
要素を選択します。
構文: img="
namespace
:
filename
.
extension
"
この例では、 book.png
および detail.png
画像 ncm
名前空間:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
これらの画像は、ユーザーがクリックして複数ページのフォームを移動するアイコンに使用されます。
フォームを作成するには、次の手順に従います。
メニューから、「 」を選択します。 管理 > 設定 > 入力フォーム.
次をクリック: 新規 」ボタンをクリックします。
フォームのプロパティを指定します。
フォーム名と名前空間を指定します。
フォーム名と名前空間は、関連するデータスキーマと一致させることができます。 この例では、 cus:order
データスキーマ:
<form entitySchema="xtk:form" img="xtk:form.png" label="Order" name="order" namespace="cus" type="iconbox" xtkschema="xtk:form">
[…]
</form>
または、 entity-schema
属性。
<form entity-schema="cus:stockLine" entitySchema="xtk:form" img="xtk:form.png" label="Stock order" name="stockOrder" namespace="cus" xtkschema="xtk:form">
[…]
</form>
フォームに表示するラベルを指定します。
必要に応じて、フォームタイプを指定します。 フォームタイプを指定しない場合、コンソール画面タイプがデフォルトで使用されます。
複数ページのフォームをデザインする場合は、 <form>
要素を選択して、コンテナのタイプを指定します。
「保存」をクリックします。
フォーム要素を挿入します。
例えば、入力フィールドを挿入するには、 <input>
要素を選択します。 を設定します。 xpath
属性を XPath 式としてフィールド参照に追加します。 詳細情報。
この例では、 nms:recipient
スキーマ。
<input xpath="@firstName"/>
<input xpath="@lastName"/>
フォームが特定のスキーマタイプに基づいている場合は、このスキーマのフィールドを検索できます。
クリック 挿入 > ドキュメントフィールド.
フィールドを選択し、 OK.
必要に応じて、フィールドエディターを指定します。
デフォルトのフィールドエディターは、各データタイプに関連付けられています。
次のタイプのフィールドエディターを使用できます。
フィールドエディター | フォーム属性 |
---|---|
ラジオボタン | type="radiobutton" |
チェックボックス | type="checkbox" |
ツリーを編集 | type="tree" |
詳細を表示: メモリリスト制御.
オプションで、次のフィールドへのアクセスを定義します。
要素 | 属性 | 説明 |
---|---|---|
<input> |
read-only="true" |
フィールドへの読み取り専用アクセスを提供します |
<container> |
type="visibleGroup" visibleIf=" edit-expr" |
条件付きでフィールドのグループを表示します |
<container> |
type="enabledGroup" enabledIf=" edit-expr" |
条件に応じてフィールドのグループを有効にします |
例:
<container type="enabledGroup" enabledIf="@gender=1">
[…]
</container>
<container type="enabledGroup" enabledIf="@gender=2">
[…]
</container>
オプションで、コンテナを使用してフィールドをセクションにグループ化します。
<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>
複数ページのフォームを作成できます。 また、他のフォーム内にフォームをネストすることもできます。
iconbox
フォーム以下を使用します。 iconbox
フォームの左側にアイコンを表示するフォームタイプ。このアイコンにより、ユーザーはフォーム内の別のページに移動できます。
既存のフォームの種類を次に変更するには iconbox
を使用する場合は、次の手順に従います。
次を変更: type
の属性 <form>
要素から iconbox
:
<form […] type="iconbox">
各フォームページにコンテナを設定します。
を追加します。 <container>
の子としての要素 <form>
要素を選択します。
アイコンのラベルと画像を定義するには、 label
および img
属性。
<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>
または、 type="frame"
既存の属性 <container>
要素。
以下を使用します。 notebook
フォームの上部にタブを表示するフォームタイプ(ユーザーを別のページに移動させます)。
既存のフォームの種類を次に変更するには notebook
を使用する場合は、次の手順に従います。
次を変更: type
の属性 <form>
要素から notebook
:
<form […] type="notebook">
各フォームページにコンテナを追加します。
<container>
の子としての要素 <form>
要素を選択します。label
および img
属性。 <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>
または、 type="frame"
既存の属性 <container>
要素。
他のフォーム内にフォームをネストすることができます。 例えば、iconbox フォーム内でノートブックフォームをネストできます。
ネスト制御のレベル。 ユーザーはサブフォームにドリルダウンできます。
別のフォーム内にフォームをネストするには、 <container>
要素を選択し、 type
属性をフォームタイプに設定します。 トップレベルのフォームの場合は、外側のコンテナまたは <form>
要素を選択します。
次の例は、複雑なフォームを示しています。
トップレベルフォームは、iconbox フォームです。 このフォームは、次のラベルが付いた 2 つのコンテナで構成されます。 一般 および 詳細.
その結果、外側のフォームには 一般 および 詳細 ページを表示します。 これらのページにアクセスするには、ユーザーがフォームの左側にあるアイコンをクリックします。
サブフォームは、 一般 コンテナ。 サブフォームは、ラベル付けされた 2 つのコンテナで構成されます 名前 および 連絡先.
<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>
その結果、 一般 外側のフォームのページは、 名前 および 連絡先 タブ。
別のフォーム内にフォームをネストするには、 <container>
要素を選択し、 type
属性をフォームタイプに設定します。 トップレベルのフォームの場合は、外側のコンテナまたは <form>
要素を選択します。
次の例は、複雑なフォームを示しています。
トップレベルフォームは、iconbox フォームです。 このフォームは、次のラベルが付いた 2 つのコンテナで構成されます。 一般 および 詳細.
その結果、外側のフォームには 一般 および 詳細 ページを表示します。 これらのページにアクセスするには、ユーザーがフォームの左側にあるアイコンをクリックします。
サブフォームは、 一般 コンテナ。 サブフォームは、ラベル付けされた 2 つのコンテナで構成されます 名前 および 連絡先.
<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>
その結果、 一般 外側のフォームのページは、 名前 および 連絡先 タブ。
ファクトリフォームを変更するには、次の手順に従います。
ファクトリ入力フォームを変更します。
ファクトリデータスキーマは拡張できますが、ファクトリ入力フォームは拡張できません。 ファクトリの入力フォームは、再作成せずに直接変更することをお勧めします。 ソフトウェアのアップグレード時に、ファクトリの入力フォームでの変更内容とアップグレードが結合されます。 自動マージが失敗した場合は、競合を解決できます。 詳細情報。
例えば、追加のフィールドを含むファクトリスキーマを拡張する場合、このフィールドを関連するファクトリフォームに追加できます。
フォームに検証コントロールを含めることができます。
フィールドに読み取り専用アクセス権を付与するには、 readOnly="true"
属性。 例えば、読み取り専用アクセス権を持つレコードのプライマリキーを表示する場合があります。 詳細情報。
この例では、プライマリキー (iRecipientId
) nms:recipient
スキーマは読み取り専用アクセスで表示されます。
<value xpath="@iRecipientId" readOnly="true"/>
次の必須情報を確認できます。
required="true"
属性を設定します。<leave>
ノードを使用して、これらのフィールドを確認し、エラーメッセージを表示します。この例では、電子メールアドレスが必要です。ユーザーがこの情報を指定しなかった場合は、エラーメッセージが表示されます。
<input xpath="@email" required="true"/>
<leave>
<check expr="@email!=''">
<error>The email address is required.</error>
</check>
</leave>
詳細を表示: 式フィールド および フォームコンテキスト.
JavaScript SOAP 呼び出しを使用して、コンソールからフォームデータを検証できます。 複雑な検証にこれらの呼び出しを使用して、例えば、許可された値のリストに対して値をチェックします。 詳細情報。
JS ファイルに検証関数を作成します。
例:
function nms_recipient_checkValue(value)
{
logInfo("checking value " + value)
if (…)
{
logError("Value " + value + " is not valid")
}
return 1
}
この例では、関数の名前はです。 checkValue
. この関数は、 recipient
データタイプ nms
名前空間。 確認中の値がログに記録されます。 値が無効な場合は、エラーメッセージが記録されます。 値が有効な場合は、値 1 が返されます。
返された値を使用してフォームを変更できます。
フォームで、 <soapCall>
要素を <leave>
要素を選択します。
この例では、SOAP 呼び出しを使用して @valueToCheck
文字列:
<form name="recipient" (…)>
(…)
<leave>
<soapCall name="checkValue" service="nms:recipient">
<param exprIn="@valueToCheck" type="string"/>
</soapCall>
</leave>
</form>
この例では、 checkValue
メソッドおよび nms:recipient
サービスは次の場合に使用されます。
呼び出しは同期的に実行されます。
すべての例外が表示されます。 を使用する場合、 <leave>
要素を指定した場合、入力した情報が検証されるまでフォームを保存できません。
次の例では、フォーム内からサービス呼び出しを実行する方法を示します。
<enter>
<soapCall name="client" service="c4:ybClient">
<param exprIn="@id" type="string"/>
<param type="boolean" xpathOut="/tmp/@count"/>
</soapCall>
</enter>
この例では、入力は ID で、プライマリキーです。 ユーザーがこの ID のフォームに入力すると、この ID を入力パラメーターとして使用した SOAP 呼び出しがおこなわれます。 出力は、このフィールドに書き込まれるブール値です。 /tmp/@count
. このブール値は、フォーム内で使用できます。 詳細を表示: フォームコンテキスト.