【问题标题】:Adding Custom Field to Edit View - SugarCRM将自定义字段添加到编辑视图 - SugarCRM
【发布时间】:2012-08-27 20:38:28
【问题描述】:

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

  1. 我在 Studio 中将该字段创建为复选框。它叫做wire_payment_c
  2. 我将该字段添加到 DetailView 和 EditView 布局中。
  3. 我运行了 Quick Repair & Rebuild
  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 将自定义字段的值保存到数据库中,然后在加载时将保存的值显示到详细信息和编辑视图?很高兴阅读有关此过程的文档,但未能找到任何似乎适用于此类特定任务的文档。

非常感谢!

【问题讨论】:

    标签: sugarcrm


    【解决方案1】:

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

    目前您正在使用: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

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

    开发支持工程师

    【讨论】:

    • 非常感谢您的回复 - 这就像一个魅力 - 感谢您的指导!
    • 哇,为这个问题苦苦挣扎了一天。这个解决方案对我来说很完美。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多