强制字段只读

强制字段在创建和编辑时只读。

本文档介绍如何强制字段在创建和编辑表单中只读。更多详细内容请参考 iTop 官方文档

概述

本示例确保用户无法在 WorkOrder 对象上输入结束日期,因为其值已通过其他方式计算。

前置条件:熟悉教程中使用的语法。

实现方式

可以通过 ITSM Designer 或扩展实现。两种方式的主要区别在于将 PHP 代码集成到 iTop 中的方式:Designer 更快捷,扩展更灵活。

使用 Designer

需要具有 “Designer PHP developer” 角色。

使用扩展

必须已创建扩展。

使字段只读

需要重载两个方法:一个用于"创建表单",一个用于"修改表单"。强制 end_date 在创建和修改时都只读。

public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
    // 在控制台编辑对象时调用此函数
    // 为对象的每个字段调用
    // 但仅修改单个字段的行为
    if ($sAttCode == 'end_date')
    {
        // 将新标志与父类设置的标志组合
        return(OPT_ATT_READONLY | parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState));
    }
    return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
}

public function GetInitialStateAttributeFlags($sAttCode, &$aReasons = array())
{
    // 在控制台创建对象时调用此函数
    // 为对象的每个字段调用
    // 但仅修改单个字段的行为
    if (($sAttCode == 'end_date'))
    {
        // 将新标志与父类设置的标志组合
        return(OPT_ATT_READONLY | parent::GetInitialStateAttributeFlags($sAttCode, $aReasons));
    }
    // 其他字段由父类处理
    return parent::GetInitialStateAttributeFlags($sAttCode, $aReasons);
}

相关主题

参考


原文:https://www.itophub.io/wiki/page?id=3_2_0:customization:read-only-field

2024/09/10 10:25 by127.0.0.1

版本:3_2_0/customization/read-only-field.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1