我正在尝试修改 SugarCRM(SugarPro 6.1.2)实例的 EditView 中自定义字段(复选框)的行为。具体来说,我希望每当有人点击复选框时都会显示一个 div。该字段按预期出现在编辑视图中,我添加了一些执行 onclick 的 javascript - 这也很好。问题是,保存记录时,未保存复选框的值。以下是关于我如何添加字段和关联 javascript 的详细信息:
- 我在 Studio 中将该字段创建为复选框。它被称为wire_payment_c
- 我将该字段添加到 DetailView 和 EditView 布局。
- 我跑了快速修复和重建
我编辑 ./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' ),
),
- 我在 ./custom/modules/MODULE/wire_pmt.js 创建了包含 showMe() 的 javascript。
- 我再次运行了快速修复和重建
如果我取出 editviewdefs.php 中的 customCode 行,我已经能够验证复选框值是否完全按预期保存并保留在数据库中。此外,我可以验证删除 onclick 指令并将输入标记保留在分配给 customCode 的值中就足以重现问题。结果似乎是这个问题与 javascript 无关——这与我如何重新呈现输入标签有关。但是我为输入标记准备的代码看起来与我完全注释掉 customCode 并通过 FireBug 查看表单时看到的完全一样。
在这种情况下,是否还有其他事情要做才能让 Sugar 将自定义字段的值保存到数据库中,然后在加载时将保存的值显示到详细信息和编辑视图?很高兴阅读有关此过程的文档,但未能找到任何似乎适用于此类特定任务的文档。
非常感谢你!