自定义字段的日期验证 - SuiteCRM版本7.10.4 Sugar版本6.5.25(Build 344)

时间:2018-05-18 11:14:26

标签: sugarcrm suitecrm

我的模块中有两个字段:start_date_c& end_date_c,日期数据类型

这些字段不是必填字段,但是当我在end_date_c字段中输入数据时,我想让它不低于start_date_c

我尝试了以下内容:

但由于我是suiteCRM的新手,我无法找到积极的回应

3 个答案:

答案 0 :(得分:2)

你需要2件事

  1. 在要添加逻辑的模块中编辑文件editviewdefs.php。将第一个自定义字段添加到编辑视图时,将自动生成此字段。
  2. 创建自定义JS逻辑以定义字段何时有效。
  3. 此逻辑将为您的

    添加验证回调
     addToValidateCallback(
            'EditView', // Form Name
            'end_date_c', // field name
            'datetime', // Field type
            false, // Is required
            "End date cannot be earlier than start date", // Message
            function() { 
              //WRITE YOUR JS VALIDATION HERE, return true when is valid
            }); 
    

    在editviewdefs.php中找到字段定义,并使用displayParams为suite / sugar添加JS。

    array (
      'name' => 'end_date_c',
     'displayParams' =>
                 array (
                  'updateCallback' => 'FUNCTIONNAME',
              ),
    ),
    

    如果您已经拥有全局自定义JS(如自定义主题的style.js文件),则不需要最后一步。

    编辑:javascript DisplaParams无效,因此添加了updateCallback选项。

    现在,此验证有两种方式。

    1. updateCallback将触发onChange
    2. 将在Save。
    3. 上触发addtoValidateCallback

      这将为您提供足够的灵活性来验证表单。

答案 1 :(得分:0)

简单且一个线性,在任何JS文件中尝试跟随(在模块编辑视图中添加):

addToValidateDateBefore('EditView', 'start_date_c', 'date', false,'Date Start', 'end_date_c' );

答案 2 :(得分:0)

为我工作。
我将以下代码添加到modules / custom_module / vardefs.php中的字段

 'audited' => true,
 'enable_range_search' => true,

并将以下内容添加到开始字段

'validation' => 
      array (
        'type' => 'isbefore',
        'compareto' => 'enddate',
        'blank' => true,
      ),