Bugzilla 扩展。如何检查自定义字段是否为空?
Bugzilla extension. How to check if custom field empty?
如果某些自定义字段为空,如何检查条件?
例如,可以检查 qa_contact 是否未设置。
sub object_end_of_set_all {
my ($self, $args) = @_;
my $object = $args->{'object'};
if ($object->{'bug_status'} eq 'RESOLVED') {
if ($object->{'qa_contact'} eq "") {
ThrowUserError("empty_qa_contact");
}
}
}
自定义字段是否有相同的方法,例如cf_test ?
我知道要在变量中保存自定义字段,需要:
my $test = new Bugzilla::Field({ name => 'cf_test' });
可以使用哪种方法获取它的值或检查它是否不为空?
发现两个问题:
1. 在执行 ThrowUserError("...") 之后,任何对象(cf_test 甚至 bugzilla 字段)始终为 NULL。
2. 如果对自定义字段使用 Hook "object_end_of_set_all",则仅显示自定义字段的缓存值。
答案是使用不同的Hook:
sub bug_end_of_update {
my ($self, $args) = @_;
my ($bug, $old_bug, $timestamp, $changes) = @$args{qw(bug old_bug timestamp changes)};
if ($bug->bug_status eq 'RESOLVED') {
if ($bug->cf_test eq "") {
ThrowUserError("test_is_empty");
}
}
}
如果某些自定义字段为空,如何检查条件?
例如,可以检查 qa_contact 是否未设置。
sub object_end_of_set_all {
my ($self, $args) = @_;
my $object = $args->{'object'};
if ($object->{'bug_status'} eq 'RESOLVED') {
if ($object->{'qa_contact'} eq "") {
ThrowUserError("empty_qa_contact");
}
}
}
自定义字段是否有相同的方法,例如cf_test ?
我知道要在变量中保存自定义字段,需要:
my $test = new Bugzilla::Field({ name => 'cf_test' });
可以使用哪种方法获取它的值或检查它是否不为空?
发现两个问题: 1. 在执行 ThrowUserError("...") 之后,任何对象(cf_test 甚至 bugzilla 字段)始终为 NULL。 2. 如果对自定义字段使用 Hook "object_end_of_set_all",则仅显示自定义字段的缓存值。
答案是使用不同的Hook:
sub bug_end_of_update {
my ($self, $args) = @_;
my ($bug, $old_bug, $timestamp, $changes) = @$args{qw(bug old_bug timestamp changes)};
if ($bug->bug_status eq 'RESOLVED') {
if ($bug->cf_test eq "") {
ThrowUserError("test_is_empty");
}
}
}