3

我正在尝试修改 SugarCRM(SugarPro 6.1.2)实例的 EditView 中自定义字段(复选框)的行为。具体来说,我希望每当有人点击复选框时都会显示一个 div。该字段按预期出现在编辑视图中,我添加了一些执行 onclick 的 javascript - 这也很好。问题是,保存记录时,未保存复选框的值。以下是关于我如何添加字段和关联 javascript 的详细信息:

  1. 我在 Studio 中将该字段创建为复选框。它被称为wire_payment_c
  2. 我将该字段添加到 DetailView 和 EditView 布局。
  3. 我跑了快速修复和重建
  4. 我编辑 ./custom/modules/MODULE/metadata/editviewdefs.php 如下:

      1 => 
    array (
      0 => '',
      1 => 
      array (
        'name' => 'wire_payment_c',
        'label' => 'LBL_WIRE_PAYMENT',
     'customCode' => '<input type="hidden" value="0" name="wire_payment_c">    
     <input id="wire_payment_c" type="checkbox" tabindex="107" title="" value="{$fields.wire_payment_c.value}" name="wire_payment_c" onclick="showMe(\'wire_message\', this)"> 
     <div id="wire_message" style="display:none">Please obtain wire payment information.</div>' ,
      ),
    ),
    

在面板定义的下方,我还添加了以下内容:

'includes'=> array(
     array('file'=>'custom/modules/MODULE/wire_pmt.js' ),
 ),
  1. 我在 ./custom/modules/MODULE/wire_pmt.js 创建了包含 showMe() 的 javascript。
  2. 我再次运行了快速修复和重建

如果我取出 editviewdefs.php 中的 customCode 行,我已经能够验证复选框值是否完全按预期保存并保留在数据库中。此外,我可以验证删除 onclick 指令并将输入标记保留在分配给 customCode 的值中就足以重现问题。结果似乎是这个问题与 javascript 无关——这与我如何重新呈现输入标签有关。但是我为输入标记准备的代码看起来与我完全注释掉 customCode 并通过 FireBug 查看表单时看到的完全一样。

在这种情况下,是否还有其他事情要做才能让 Sugar 将自定义字段的值保存到数据库中,然后在加载时将保存的值显示到详细信息和编辑视图?很高兴阅读有关此过程的文档,但未能找到任何似乎适用于此类特定任务的文档。

非常感谢你!

4

1 回答 1

2

在调查您的问题时,我发现问题在于您如何确定复选框是否被选中。这会影响表单提交的方式。

目前您正在使用:value="{$fields.wire_payment_c.value}"

默认情况下,属性值应为1. true是否false使用属性指定复选框的决定因素checked

您的customCode属性应该看起来更像这样:

'customCode' => '<input type="hidden" value="0" name="wire_payment_c">{if $fields.wire_payment_c.value == "1"}{assign var="isChecked" value="CHECKED"}{else}{assign var="isChecked" value=""}{/if}<input type="checkbox" id="wire_payment_c" name="wire_payment_c" value="1" title="" tabindex="107" onclick="showMe(\'wire_message\', this)" {$isChecked}><div id="wire_message" style="display:none">Please obtain wire payment information.</div>',

要了解我们如何在核心产品中处理此问题,您可以查看include/SugarFields/Fields/Bool/EditView.tpl.

亲切的问候,杰里·克拉克

开发者支持工程师

于 2012-08-28T16:31:46.853 回答