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"表单提交方式。
urlstringformBase ✓null表单提交地址。
actionsarrayformBase ✓["submit","cancel"]表单操作按钮,如果不指定则使用默认行为的 “保存” 和 “返回” 按钮。
actionsClassstringformBase ✓null表单操作按钮栏类名。
targetstringformBase ✓"ajax"表单提交目标,如果是 'ajax' 提交则为 ajax,在禅道中除非特殊目的,都使用 ajax 进行提交。
submitBtnTextstringformBase ✓null表单提交按钮文本,如果不指定则使用 $lang->save 的值。
cancelBtnTextstringformBase ✓null表单取消按钮文本,如果不指定则使用 $lang->goback 的值。
itemsarray[]formBatch ✓null使用一个列定义对象数组来定义批量表单项。
minRowsintformBatch ✓null最小显示的行数目。
maxRowsintformBatch ✓null最多显示的行数目。
dataarray[]formBatch ✓null初始化行数据。
modestringformBatch ✓null批量操作模式,可以为 'add'(批量添加) 或 'edit'(批量编辑)。
actionsTextstringformBatch ✓null操作列头部文本,如果不指定则使用 $lang->actions 的值。
addRowIconstringfalseformBatch ✓null添加行的图标,如果设置为 false 则不显示图标
deleteRowIconstringfalseformBatch ✓null删除行的图标,如果设置为 false 则不显示图标
onRenderRowfunctionformBatch ✓null渲染行时的回调函数。
onRenderRowColfunctionformBatch ✓null渲染列时的回调函数。

指定回调函数 ​

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

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

提示

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

参考 ​

https://zentao.net