Testlink 1.9.16集成Jira:修改Issue追踪器版本字段必填状态
我刚好对Testlink 1.9.x的Jira集成这块摸得比较熟,给你拆解下你关心的问题:
Testlink 1.9.16 Jira集成:Version字段修改指南
1. 负责该功能的代码类型及位置
你的推测没错,前端JavaScript是控制弹窗必填校验的核心,但后端PHP也负责字段的定义、渲染和后台校验,两者都需要调整:
前端JS/模板文件
Testlink用Smarty模板渲染Issue创建弹窗,核心文件是:
testlink/gui/templates/issuetracking/jira/createIssue.tpl(不同版本可能命名略有差异,你可以搜包含"Version"字段的tpl文件):里面包含了Version字段的HTML结构和内嵌的表单校验JS代码,比如判断字段是否必填的逻辑。- 辅助JS:全局Issue追踪器逻辑可能在
testlink/js/issuetracking.js,但直接修改模板里的内嵌JS更直接。
后端PHP类
控制Jira字段配置和后台逻辑的核心类是:
testlink/lib/issuetracking/jira/jiraIssueTracker.class.php:这个类里的getCreateIssueFormFields()方法定义了所有显示在创建弹窗里的字段,包括是否必填、字段类型、选项来源等;另外createIssue()方法可能包含后台提交时的字段校验逻辑。
2. 如何禁用Version字段(保留其他3个字段)
分两步操作,确保前端和后端都同步修改:
前端:移除必填校验&隐藏/保留字段
- 打开
createIssue.tpl,找到Version字段的HTML块,比如:
<div class="form-row"> <label for="version">Version *</label> <select name="version" id="version" required> <!-- 空选项 --> </select> </div>
- 如果只是取消必填:去掉
required属性,删掉标签里的*; - 如果要完全隐藏字段:给这个div加
style="display:none;",或者直接注释掉整个字段块。
- 找到模板里的表单校验JS(比如
validateForm()函数),删除或注释掉针对Version字段的校验逻辑,比如:
// 删掉这段 if (!document.getElementById('version').value) { alert('Version is required'); return false; }
后端:取消字段必填&移除字段定义(可选)
- 打开
jiraIssueTracker.class.php,找到getCreateIssueFormFields()方法里的Version字段配置,类似:
$fields[] = array( 'name' => 'version', 'label' => 'Version', 'type' => 'select', 'required' => true, 'options' => $this->getVersions() );
- 取消必填:把
'required' => true改成false; - 完全移除字段:直接从
$fields数组里删掉这个元素。
- 检查
createIssue()方法,如果有针对Version字段的强制校验逻辑,也要注释掉对应的代码块。
3. 注意事项
- 修改前一定要备份原文件,避免改坏了没法回滚;
- 如果你只是不需要Version字段的必填限制,只需要修改前端的
required属性和后端的required配置即可;如果完全不需要显示这个字段,再做隐藏/移除操作; - 你提到Version字段无对应条目,大概率是后端
getVersions()方法返回空数组,但既然你不用这个字段,直接禁用比排查配置问题更高效。
内容的提问来源于stack exchange,提问作者Kwandes
相关产品推荐
相关产品推荐

