iTop中同一类型对象使用不同的图标

iTop 中网络设备类没有细分为交换机路由器防火墙,而是通过一个 外建类型的属性 networkdevicetype_id 来确定网络设备类型。这样做大概是因为能够复用代码。但是会有一个问题,生成的影响图里,网络设备的图标是单一的,无法清晰的看出是交换机,路由器或者是防火墙设备。如图所示。

如果拆分 NetworkDevice 类,将其变为抽象类,然后细分交换机,路由器,防火墙,负载均衡.... 想想要为每个类写 presentation 也挺可怕的。所以还是要找简单点的方法。

DBObject 提供了 GetIcon 方法,通过此方法,可以实现自定义 Icon,代码如下:

效果如图。

One thought on “iTop中同一类型对象使用不同的图标

  1. 支持上传图标的方法。

    public function GetIcon($bImgTag = true)
    {
    $iPeripheralType = $this->Get('peripheraltype_id');
    $oPeripheralType = MetaModel::GetObject("PeripheralType", $iPeripheralType, false, true);
    if(is_null($oPeripheralType)) {
    return parent::GetIcon($bImgTag);
    } else {
    $sIcon = $oPeripheralType->Get('icon')->GetDisplayURL('PeripheralType', $iPeripheralType, 'icon');
    if($bImgTag) {
    return '';
    } else {
    // 影响图里不需要 img tag
    return $sIcon;
    }
    }
    }

发表回复

您的电子邮箱地址不会被公开。