批量操作表单
批量操作表单继承自基本表单部件(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)
);
属性
名称 | 类型 | 所属部件 | 可选 | 默认值 | 说明 |
---|---|---|---|---|---|
id | string | formBase | ✓ | "$GID" | ID,如果不指定则自动生成(使用 zin 部件 GID)。 |
method | "get" "post" | formBase | ✓ | "post" | 表单提交方式。 |
url | string | formBase | ✓ | null | 表单提交地址。 |
actions | array | formBase | ✓ | ["submit","cancel"] | 表单操作按钮,如果不指定则使用默认行为的 “保存” 和 “返回” 按钮。 |
actionsClass | string | formBase | ✓ | null | 表单操作按钮栏类名。 |
target | string | formBase | ✓ | "ajax" | 表单提交目标,如果是 'ajax' 提交则为 ajax,在禅道中除非特殊目的,都使用 ajax 进行提交。 |
submitBtnText | string | formBase | ✓ | null | 表单提交按钮文本,如果不指定则使用 $lang->save 的值。 |
cancelBtnText | string | formBase | ✓ | null | 表单取消按钮文本,如果不指定则使用 $lang->goback 的值。 |
items | array[] | formBatch | ✓ | null | 使用一个列定义对象数组来定义批量表单项。 |
minRows | int | formBatch | ✓ | null | 最小显示的行数目。 |
maxRows | int | formBatch | ✓ | null | 最多显示的行数目。 |
data | array[] | formBatch | ✓ | null | 初始化行数据。 |
mode | string | formBatch | ✓ | null | 批量操作模式,可以为 'add' (批量添加) 或 'edit' (批量编辑)。 |
actionsText | string | formBatch | ✓ | null | 操作列头部文本,如果不指定则使用 $lang->actions 的值。 |
addRowIcon | string false | formBatch | ✓ | null | 添加行的图标,如果设置为 false 则不显示图标 |
deleteRowIcon | string false | formBatch | ✓ | null | 删除行的图标,如果设置为 false 则不显示图标 |
onRenderRow | function | formBatch | ✓ | null | 渲染行时的回调函数。 |
onRenderRowCol | function | formBatch | ✓ | null | 渲染列时的回调函数。 |
指定回调函数
批量操作表单部件支持两种回调函数,分别是 onRenderRow
和 onRenderRowCol
,下面为一个简单示例:
php
formBatch
(
set::onRenderRow(jsRaw('window.handleRenderRow')) // 需要在 JS 中定义 window.handleRenderRow 方法。
);
提示
可以用 jsRaw
函数来定义一个 JavaScript 代码块或引用 JavaScript 函数或变量。