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

Date validation for custom field - SuiteCRM Version 7.10.4 Sugar Version 6.5.25 (Build 344)

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

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

我试过以下方法:

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

你需要两样东西

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

这里的逻辑将为您的

添加一个验证回调
 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 将在更改时触发
  2. 保存时将触发 addtoValidateCallback。

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

简单且线性,尝试在任何 JS 文件中执行以下操作(在模块编辑视图中添加):

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

对我有用。
我将以下代码添加到 modules/custom_module/vardefs 中的字段。php

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

并将以下内容添加到 start 字段

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