大道至简,新一代企业应用无栈开发

平台之上,一种语言,可视化、脚本化、全端一体化开发

定制表单字段

调整表单字段的默认展示

docutils document without title

平台自带的字段类型比较少,但是可以通过定制,提供更多字展示形式。

1   设置字段展示形式

可以在表单设计器中,可设置字段的展示形式插件。

每个展示形式插件,包含:

  • 特定命名规范的脚本:用于渲染
  • 特定命名规范表单:用于设置

2   使用字段插件定制查看、编辑

不同类型的字段脚本命名前缀不同:

  • widget_line_ : 单行
  • widget_lines_ :多行
  • widget_text_ : 文本框
  • widget_int_ :整数
  • widget_bool_ :布尔
  • widget_ref_ : 内容选择字段

每个脚本的写法为:

def widget_line_forms(mode, form_name, value, field, options):

其中:

  • mode: 脚本使用场景:

    • view:返回字段显示的渲染结果
    • edit:返回字段编辑的渲染结果
    • text: 返回字段纯文本方式展示结果
  • value:字段保存的值(用于编辑和查看)

  • field: 字段的信息,是一个dict,包括的key:

    • name: 字段名
    • multiple: 是否多选
  • form_name: 表单在编辑时的input名字

  • options: 使用字段的时候,可以和一个同名的表单关联,用于输入字段的一些设置参数,options是存放了这些设置信息的一个dict对象。

3   定制字段的搜索子表单(search_form)

在搜索模式,每个字段,可以包括多个子字段联合搜索,比如:

  • 搜索方式:任何一个、全部
  • 开始时间、结束时间

可定义一个表单,用于渲染这个字段的搜索子字段。

  • 表单命名约定为 : search_ 前缀
  • 表单的”当更改时“ 触发脚本中,将表单字段,转换为搜索query_json并返回
  • 如果定制单选/多选字段,搜索子字段中的所有单选/多选字段如果可选值为空,会自动使用原始字段的可选值

4   定制字段的统计分组子表单(stat_form)

每个字段,可以进行统计分组,每个统计分组也是一个子表单。

统计分组表单 是插件脚本的名字前加上 stat_group_

这个表单的 update 触发脚本,对提交表单的数据进行规整,返回最终用户 QuerySet 分组的json字符串。

5   例子

定制title字段的搜索形式,支持部分匹配、全部匹配的下拉选项:

  1. 创建一个字段定制脚本,例如widget_line_test, 脚本留空或者直接返回None;

  2. 选择定制字段的展示形式(widget_line_test);

  3. 创建一个表单,命名为search_widget_line_test;

  4. 添加多选文本字段,operator 定制展示方式 下拉选择,具体参照zopen.widgets

  5. 编写【当保存时】脚本,返回可用的query_json格式,该脚本可以使用result,field_name两个参数,其中:

    • result为当前表单提交后得到的result, 例如{'operator': 'anyof', 'value': 'test'},
    • field_name为被定制字段的name, 例如本例子中的title;

在应用市场,安装相关软件包,可参考如下定制表单字段示例:

  • 颜色选择字段
  • 手写签字字段