添加自定义字段以编辑视图-SugarCRM

添加自定义字段以编辑视图-SugarCRM,sugarcrm,Sugarcrm,我正在尝试修改SugarCRM(SugarPro 6.1.2)实例的EditView中自定义字段(复选框)的行为。具体地说,我希望每当有人点击复选框时,就会显示一个div。该字段如预期的那样出现在编辑视图中,并且我添加了一些执行onclick的javascript——这也很好。问题是,保存记录时,复选框的值不会保存。以下是我如何添加字段和关联javascript的详细信息: 我在Studio中将该字段创建为复选框。这叫做电汇支付 我将该字段添加到DetailView和EditView布局中 我进

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

  • 我在Studio中将该字段创建为复选框。这叫做电汇支付
  • 我将该字段添加到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>' ,
      ),
    ),
    
  • 我在./custom/modules/MODULE/wire_pmt.js创建了包含showMe()的javascript
  • 我又进行了一次快速修复和重建
  • 如果在editviewdefs.php中取出customCode行,我就能够验证复选框值是否完全按照预期保存并保留在数据库中。此外,我可以验证删除onclick指令并简单地将输入标记保留在分配给customCode的值中足以重现问题。结果似乎是,这个问题与javascript无关——它与我如何重新呈现输入标记有关。但是我为input标记准备的代码看起来与我在注释customCode并通过FireBug查看表单时看到的完全一样

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


    多谢各位

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

    当前您正在使用:
    value=“{$fields.wire\u payment\u 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>',
    
    'customCode'=>'{if$fields.wire\u payment\u c.value==“1”}{assign var=“isChecked”value=“CHECKED”}{else}{assign var=“isChecked”value=“”}{/if}请获取电汇支付信息,
    
    要了解我们在核心产品中如何处理这个问题,您可以查看
    include/SugarFields/Fields/Bool/EditView.tpl

    亲切问候,, 杰瑞·克拉克


    开发人员支持工程师

    非常感谢您的回复-这很有魅力-感谢您的指导!哇,我为这个问题绞尽脑汁了一天。这个解决方案对我来说非常有效。谢谢
    '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>',