我正在尝试修改SugarCRM(SugarPro 6.1.2)实例的EditView中自定义字段(复选框)的行为。具体来说,我希望只要有人点击复选框就会暴露div。该字段按预期显示在“编辑”视图中,我添加了一些执行onclick的javascript - 这也可以正常工作。问题是,保存记录时,不会保存复选框的值。以下是我如何添加字段和关联javascript的具体信息:
我编辑了./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' ),
),
如果我在editviewdefs.php中取出customCode行,我已经能够验证复选框值是否与预期完全一致地保存并保留在数据库中。此外,我可以验证删除onclick指令并将输入标记保留在分配给customCode的值中足以重现问题。 Upshot似乎是这个问题与javascript无关 - 它是关于我如何重新渲染输入标签的东西。但是我为输入标签提供的代码看起来与我在完全注释掉customCode并通过FireBug查看表单时所看到的完全相同。
在这样的情况下是否还有其他事情要让Sugar将自定义字段的值保存到数据库中,然后在加载时将保存的值显示给Detail和Edit Views?很高兴阅读关于这个过程的文档,但是没有找到任何似乎适用于这种特定任务的文档。
非常感谢!
答案 0 :(得分: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
。
亲切的问候, 杰里克拉克
开发人员支持工程师