作者:Gakki
搜索現(xiàn)有資料時,我發(fā)現(xiàn)相關內(nèi)容多針對舊版本,關于最新版本的修改方法介紹較少。因此我根據(jù)自己的探索,整理了這份思路,希望能對大家有所幫助。
zin官方文檔【前端用的文檔】
module/
└── bug/ # 模塊目錄
├── control.php # 控制層 - 頁面訪問入口
├── zen.php # 控制子層 - control的內(nèi)部邏輯
├── model.php # 模型層 - 數(shù)據(jù)庫操作
├── tao.php # 模型子層 - 基礎數(shù)據(jù)庫操作
├── view/ # 舊視圖層 (18版本前)
├── ui/ # 新視圖層 (20版本后)
├── config/ # 模塊配置
├── lang/ # 語言文件
├── css/ # 前端樣式
└── js/ # JavaScript代碼
注:最好不要在禪道源代碼上改,不然升級的時候會直接覆蓋。
-
按照禪道21版本的官方開發(fā)規(guī)范,需要:
- 完整修改所有相關層: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' => ''); // 新增字段【耗時】

4. resolve 界面
注:20版本view界面是在 ui 目錄下修改。

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界面

數(shù)據(jù)庫寫入

-
如果改到這里能寫入數(shù)據(jù)庫,就可以不用改control模塊了。如果不行就在control模塊新增獲取resolutionHours代碼即可
control.php 配置
找到 resolve 方法。
// 獲取解決耗時字段
$bug->resolutionHours = $this->post->resolutionHours;

-
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 查看界面



