作者:Gakki
搜索现有资料时,我发现相关内容多针对旧版本,关于最新版本的修改方法介绍较少。因此我根据自己的探索,整理了这份思路,希望能对大家有所帮助。
zin官方文档【前端用的文档】
module/
└── bug/ # 模块目录
├── control.php # 控制层 - 页面访问入口
├── zen.php # 控制子层 - control的内部逻辑
├── model.php # 模型层 - 数据库操作
├── tao.php # 模型子层 - 基础数据库操作
├── view/ # 旧视图层 (18版本前)
├── ui/ # 新视图层 (20版本后)
├── config/ # 模块配置
├── lang/ # 语言文件
├── css/ # 前端样式
└── js/ # JavaScript代码
注:最好不要在禅道源代码上改,不然升级的时候会直接覆盖。
-
按照禅道21版本的官方开发规范,需要:
- 完整修改所有相关层:control → model → view、lang → config
- 使用新的 Zin UI 组件:视图文件在 ui/目录。
1. 基础配置
- sql 语句新增字段
ALTER TABLE zt_bug ADD COLUMN resolutionHours DECIMAL(5,2) DEFAULT NULL COMMENT '解决耗时(小时)';
2. bug/lang/zh-cn.php 新增配置
// 新增字段,以及单位
$lang->bug->resolutionHours = '耗时';
$lang->bug->resolutionHoursTimes = ' h';

基础配置
3. 解决 Bugs 界面字段
bug/config/form.php 解决bug界面新增字段
$config->bug->form->resolve['resolutionHours'] = array('required' => false, 'type' => 'DECIMAL', 'default' => ''); // 新增字段【耗时】

解决 Bugs 界面字段
4. resolve 界面
注:20版本view界面是在 ui 目录下修改。

resolve 界面
4.1 新增 resolutionHours 字段
复制下列代码到 ui/resolve.html.php 里。
// 新增耗时展示字段
formGroup
(
set::width('1/3'),
set::label($lang->bug->resolutionHours),
set::required(true),
inputControl
(
input
(
set::type('textarea'),
set::placeholder('解决Bug耗时'),
set::name('resolutionHours'),
set::value(0)
// set::value($effort->consumed)
),
to::suffix($lang->bug->resolutionHoursTimes),
set::suffixWidth(20)
)
),
如图所示

新增字段
解决Bug界面

解决Bug界面
数据库写入

数据库写入
-
如果改到这里能写入数据库,就可以不用改control模块了。如果不行就在control模块新增获取resolutionHours代码即可
control.php 配置
找到 resolve 方法。
// 获取解决耗时字段
$bug->resolutionHours = $this->post->resolutionHours;

image.png
-
model 模块整个过程都不需要改动任何东西。
其他view、edit展示界面只需要在ui/view.html.php或者edit.html.php将resolutionHours字段展示出来即可。control、modle 都不需要改任何东西。
Bug 编辑界面
// 编辑界面新增字段展示开始
item
(
set::name($lang->bug->resolutionHours),
input
(
set::disabled(true),
set::name('resolutionHours'),
set::value($bug->resolutionHours. $lang->bug->resolutionHoursTimes)
)
),
// 编辑界面新增字段展示结束
-
将代码复制到 bug/ui/edit.html.php对应位置。
image.png -
新增之后,Bug编辑界面。
Bug编辑界面
Bug 查看界面
- 因为 Bug 查看界面是直接封装好了的,所以我们只能重新新增一个展示模块。
// 新增代码开始
// 在基本信息后添加解决耗时显示
//if(isset($bug->resolutionHours) && $bug->resolutionHours > 0)
if (in_array($bug->status, ['resolved', 'closed']))
{
$tabs[] = setting()
->group('basic')
->title($lang->bug->AddNewField)
->control('html')
->content("
<div style='padding: 0; margin: -20px 0 0 0; line-height: 1;'>
<span style='color: #595959;'>耗时:</span><span style='color: #262626; font-weight: 500;'>{$bug->resolutionHours} 小时</span>
</div>
");
}
// 新增代码结束
-
将代码复制到bug/ui/view.html.php对应位置。
新增代码 在 bug/lang/zh-cn.php下新增配置字段
$lang->bug->AddNewField = '自定义字段';

新增配置字段
-
新增之后,Bug查看界面。
Bug 查看界面



