Skip to content

批量操作表单

批量操作表单继承自基本表单部件(formBase),用于创建批量操作表单。

提示

该部件仅提供表单渲染功能,如果需要实现一个包含标题栏和标题操作按钮的批量操作页面,推荐使用批量操作面板部件(formBatchPanel)。

用法

定义模式

批量操作表单面板支持两种模式,通过 mode 属性来进行定义,可选值包括:

  • 'add':批量添加模式,为默认模式,用户可以自由删除行数据和插入新的行数据;
  • 'edit':批量编辑模式,必须同时提供 data 属性来定义每一行的原始数据。

定义表单项

批量操作表单通过一个类似表格的部件来展现表单控件,表格每一行对应一组表单操作,每一列对应一个表单控件。要定义每一列上的控件有两种方式,下面分别进行介绍。

提示

表单项的列宽设置参考文档 批量操作项 → 列宽设置

通过 formBatchItem 定义

可以通过批量操作表单项(formBatchItem)部件来定义每一列上的控件。下面为一个简单示例:

php
$modules = array();
$modules[] = array('text' => '/', 'value' => 0);
$modules[] = array('text' => '/Website', 'value' => 1);

formBatch
(
    formBatchItem
    (
        set::name('id'),
        set::label('ID'),
        set::control('index'),
        set::width('50px'),
    ),
    formBatchItem
    (
        set::name('module'),
        set::label('Module'),
        set::tip('Select module'),
        set::width('200px'),
        set::ditto(true),
        set::items($modules),
        set::control('select'),
        set::hidden(true),
    ),
    formBatchItem
    (
        set::name('title'),
        set::required(true),
        set::label('Title')
    ),
    formBatchItem
    (
        set::name('desc'),
        set::label('Desc'),
        set::width('1/3'),
        set::control('editor')
    )
);

通过 items 属性定义

也可以通过 items 属性来定义每一列上的控件,这种方式更加灵活,可以通过数组来定义每一列上的控件,下面为一个简单示例:

php
$modules = array();
$modules[] = array('text' => '/', 'value' => 0);
$modules[] = array('text' => '/Website', 'value' => 1);

$items = array();
$items[] = array
(
    'name' => 'id',
    'label' => 'ID',
    'control' => 'index',
    'width' => '50px'
);
$items[] = array
(
    'name' => 'module',
    'label' => 'Module',
    'tip' => 'Select module',
    'width' => '200px',
    'ditto' => true,
    'items' => $modules,
    'control' => 'select',
    'hidden' => true
);
$items[] = array
(
    'name' => 'title',
    'required' => true,
    'label' => 'Title'
);
$items[] = array
(
    'name' => 'desc',
    'label' => 'Desc',
    'width' => '1/3',
    'control' => 'editor'
);

formBatch
(
    set::items($items)
);

属性

名称 类型 所属部件 可选 默认值 说明
idstringformBase"$GID"ID,如果不指定则自动生成(使用 zin 部件 GID)。
method"get""post"formBase"post"表单提交方式。
urlstringformBasenull表单提交地址。
actionsarrayformBase["submit","cancel"]表单操作按钮,如果不指定则使用默认行为的 “保存” 和 “返回” 按钮。
actionsClassstringformBasenull表单操作按钮栏类名。
targetstringformBase"ajax"表单提交目标,如果是 'ajax' 提交则为 ajax,在禅道中除非特殊目的,都使用 ajax 进行提交。
submitBtnTextstringformBasenull表单提交按钮文本,如果不指定则使用 $lang->save 的值。
cancelBtnTextstringformBasenull表单取消按钮文本,如果不指定则使用 $lang->goback 的值。
itemsarray[]formBatchnull使用一个列定义对象数组来定义批量表单项。
minRowsintformBatchnull最小显示的行数目。
maxRowsintformBatchnull最多显示的行数目。
dataarray[]formBatchnull初始化行数据。
modestringformBatchnull批量操作模式,可以为 'add'(批量添加) 或 'edit'(批量编辑)。
actionsTextstringformBatchnull操作列头部文本,如果不指定则使用 $lang->actions 的值。
addRowIconstringfalseformBatchnull添加行的图标,如果设置为 false 则不显示图标
deleteRowIconstringfalseformBatchnull删除行的图标,如果设置为 false 则不显示图标
onRenderRowfunctionformBatchnull渲染行时的回调函数。
onRenderRowColfunctionformBatchnull渲染列时的回调函数。

指定回调函数

批量操作表单部件支持两种回调函数,分别是 onRenderRowonRenderRowCol,下面为一个简单示例:

php
formBatch
(
    set::onRenderRow(jsRaw('window.handleRenderRow')) // 需要在 JS 中定义 window.handleRenderRow 方法。
);

提示

可以用 jsRaw 函数来定义一个 JavaScript 代码块或引用 JavaScript 函数或变量。

参考

https://zentao.net