编辑表单 editing-forms
概述
营销人员和操作员使用输入表单来创建、修改和预览记录。 Forms显示信息的可视化表示形式。
您可以创建和修改输入表单:
- 您可以修改默认提供的出厂输入表单。 工厂输入表单基于工厂数据架构。
- 您可以根据定义的数据架构创建自定义输入表单。
Forms是以下实体 xtk:form
类型。 您可以在以下位置查看输入表单结构: xtk:form
架构。 要查看此架构,请选择 Administration > Configuration > Data schemas 菜单。 详细了解 窗体结构.
要访问输入表单,请选择 Administration> Configuration >Input forms 从菜单中:
要设计表单,请在XML编辑器中编辑XML内容:
阅读更多。
要预览表单,请单击 Preview 选项卡:
表单类型
您可以创建不同类型的输入表单。 表单类型决定了用户如何在表单中导航:
容器
在表单中,您可以将容器用于各种目的:
- 在表单中整理内容
- 定义对输入字段的访问权限
- 在其他表单中嵌套表单
阅读更多。
组织内容
使用容器在表单中整理内容:
- 您可以将字段分组为多个部分。
- 您可以将页面添加到多页面表单。
要插入容器,请使用 <container>
元素。 阅读更多。
组字段
使用容器将输入字段分组为有组织的部分。
要将节插入窗体,请使用此元素: <container type="frame">
. 或者,要添加章节标题,请使用 label
属性。
语法: <container type="frame" label="
section_title"> […] </container>
在此示例中,容器定义 创建 部分,包括 Created by 和 Name 输入字段:
<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>
定义对字段的访问权限
使用容器定义可见内容并定义对字段的访问权限。 您可以打开或关闭字段组。
嵌套表单
使用容器将表单嵌套在其他表单中。 阅读更多。
对图像的引用
要查找图像,请选择 Administration > Configuration > Images 菜单。
要将图像与表单中的元素(例如图标)相关联,可以添加对图像的引用。 使用 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>
这些图像用于用户单击以导航多页表单的图标:
创建简单表单 create-simple-form
要创建表单,请执行以下步骤:
-
从菜单中,选择 Administration > Configuration > Input forms.
-
单击 New 按钮进行标记。
-
指定表单属性:
-
指定表单名称和命名空间。
表单名称和命名空间可以与相关数据架构匹配。 此示例显示了
cus:order
数据架构:code language-xml <form entitySchema="xtk:form" img="xtk:form.png" label="Order" name="order" namespace="cus" type="iconbox" xtkschema="xtk:form"> […] </form>
或者,您可以在
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>
-
指定要在表单上显示的标签。
-
(可选)指定表单类型。 如果未指定表单类型,则默认使用控制台屏幕类型。
如果您设计的是多页表单,则可以省略
<form>
元素,并在容器中指定类型。
-
-
单击 Save。
-
插入表单元素。
例如,要插入输入字段,请使用
<input>
元素。 设置xpath
作为XPath表达式的字段引用的属性。 阅读更多。此示例显示基于
nms:recipient
架构。code language-xml <input xpath="@firstName"/> <input xpath="@lastName"/>
-
如果表单基于特定的架构类型,则可以查找此架构的字段:
-
单击 Insert > Document fields.
-
选择字段并单击 OK.
-
-
(可选)指定字段编辑器。
默认字段编辑器与每种数据类型相关联:
- 对于日期类型字段,该表单会显示输入日历。
- 对于枚举类型字段,该表单会显示一个选择列表。
您可以使用以下字段编辑器类型:
table 0-row-2 1-row-2 2-row-2 3-row-2 字段编辑器 表单属性 单选按钮 type="radiobutton"
复选框 type="checkbox"
编辑树 type="tree"
详细了解 内存列表控件.
-
(可选)定义对字段的访问权限:
table 0-row-3 1-row-3 2-row-3 3-row-3 元素 属性 说明 <input>
read-only="true"
提供对字段的只读访问权限 <container>
type="visibleGroup" visibleIf="
edit-expr"
有条件地显示一组字段 <container>
type="enabledGroup" enabledIf="
edit-expr"
有条件地启用一组字段 例如:
code language-xml <container type="enabledGroup" enabledIf="@gender=1"> […] </container> <container type="enabledGroup" enabledIf="@gender=2"> […] </container>
-
(可选)使用容器将字段分组为多个部分。
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>
创建多页表单 create-multipage-form
您可以创建多页面表单。 还可以将表单嵌套在其他表单中。
创建 iconbox
表单
使用 iconbox
表单类型:在表单左侧显示图标,这些图标会将用户引导至表单中的不同页面。
要将现有表单的类型更改为 iconbox
,请按照以下步骤操作:
-
更改
type
的属性<form>
元素至iconbox
:code language-xml <form […] type="iconbox">
-
为每个表单页面设置一个容器:
-
添加
<container>
元素作为的子项<form>
元素。 -
要定义图标的标签和图像,请使用
label
和img
属性。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>
或者,删除
type="frame"
现有属性中的<container>
元素。 -
创建笔记本表单
使用 notebook
表单类型:在表单顶部显示选项卡,这些选项卡会将用户引导至不同的页面。
要将现有表单的类型更改为 notebook
,请按照以下步骤操作:
-
更改
type
的属性<form>
元素至notebook
:code language-xml <form […] type="notebook">
-
为每个表单页面添加一个容器:
- 添加
<container>
元素作为的子项<form>
元素。 - 要定义图标的标签和图像,请使用
label
和img
属性。
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>
或者,删除
type="frame"
现有属性中的<container>
元素。 - 添加
嵌套表单
您可以将表单嵌套在其他表单中。 例如,可以将笔记本表单嵌套在iconbox表单中。
嵌套级别控制导航。 用户可以向下钻取到子表单。
要将表单嵌套在另一个表单中,请插入 <container>
元素并设置 type
表单类型的属性。 对于顶级表单,可以在外部容器中或在 <form>
元素。
示例
此示例显示了一个复杂的形式:
-
顶级表单是iconbox表单。 此表单包含两个标记为的容器 常规 和 详细信息.
因此,外部形式显示 常规 和 详细信息 页面顶层。 要访问这些页面,请单击表单左侧的图标。
-
子表单是嵌套在 常规 容器。 该子表单包括两个标记有标签的容器 名称 和 联系人.
<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表单。 此表单包含两个标记为的容器 常规 和 详细信息.
因此,外部形式显示 常规 和 详细信息 页面顶层。 要访问这些页面,请单击表单左侧的图标。
-
子表单是嵌套在 常规 容器。 该子表单包括两个标记有标签的容器 名称 和 联系人.
<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>
因此, 常规 外窗体的页面显示 名称 和 联系人 选项卡。
修改工厂输入表单 modify-factory-form
要修改出厂表单,请执行以下步骤:
-
修改工厂输入表单:
- 从菜单中,选择 Administration > Configuration > Input forms.
- 选择输入表单并修改它。
您可以扩展工厂数据架构,但不能扩展工厂输入表单。 我们建议您直接修改出厂输入表单,而无需重新创建它们。 在软件升级期间,工厂输入表单中的修改将与升级合并。 如果自动合并失败,您可以解决冲突。 阅读更多。
例如,如果使用附加字段扩展工厂模式,则可以将此字段添加到相关的工厂表单。
验证表单 validate-forms
您可以在表单中包含验证控件。
授予对字段的只读访问权限
要授予对字段的只读访问权限,请使用 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文件中创建验证函数。
例如:
code language-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
字符串:code language-xml <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
. 您可以在表单内使用此布尔值。 详细了解 表单上下文.