在 suiteCRM 中,如何将地址字段国家和州文本字段更改为下拉列表?

In suiteCRM how does one get about changing the Address field country and state text fields to be dropdowns?

我正在开发一个自定义套件 CRM 模块,但是我发现地址字段有限制,因为它使用文本字段作为国家和州字段。

我已尝试按照本网站上的说明对其进行研究:

https://johndopenotes.wordpress.com/2013/01/08/sugarcrm-change-address-state-and-country-to-dropdown-menu/

但是我卡在了第 5 步,因为我的自定义模块没有元数据目录???

  1. 转到 /custom/modules/Leads/metadata 并更新 editviewdefs.php。查找此代码:

    数组( 'name' => 'primary_address_street', 'hideLabel' => 正确, 'type' => 'Address', 'displayParams' => 大批 ( 'key' => 'primary', 'rows' => 2, 'cols' => 30, 'maxlength' => 150, ), ), 1 => 大批 ( 'name' => 'alt_address_street', 'hideLabel' => 正确, 'type' => 'Address', 'displayParams' => 大批 ( 'key' => 'alt', 'copy' => 'primary', 'rows' => 2, 'cols' => 30, 'maxlength' => 150, ), ),

并将类型从 Address 更新为 CustomAddress

array (
            'name' => 'primary_address_street',
            'hideLabel' => true,
            'type' => 'CustomAddress',
            'displayParams' => 
            array (
              'key' => 'primary',
              'rows' => 2,
              'cols' => 30,
              'maxlength' => 150,
            ),
          ),
          1 => 
          array (
            'name' => 'alt_address_street',
            'hideLabel' => true,
            'type' => 'CustomAddress',
            'displayParams' => 
            array (
              'key' => 'alt',
              'copy' => 'primary',
              'rows' => 2,
              'cols' => 30,
              'maxlength' => 150,
            ),
          ),

有人可以指点一下如何在我的自定义模块下拉列表中创建地址字段而不是文本字段吗?

这应该只是更新字段的 vardef 的情况,因此类型设置为枚举并且选项指向您的下拉列表。然后 运行 修复和重建。

您链接到的指南看起来像是在创建一个新的字段类型,我认为这有点矫枉过正。它还使用 Sugar 逻辑使 2 个列表相互依赖,但我不确定这是 SuiteCRM 中的一个功能。

您可以使用多个字段的组合来代替选择地址类型字段。对于街道地址的示例,您可以使用 (datatype:textField)

同样,对于城市,您可以添加文本字段。现在,对于州和国家/地区,您可以使用下拉列表并根据需要添加下拉列表

对于邮政编码,您可以根据需要使用整数/文本字段。

现在要使状态依赖于国家/地区,您可以按以下方式使用自定义 javascript / jquery

  1. 添加对您要添加的 javascript 文件的引用 custom/modules/<>/metadata/[edit|detail]viewdefs.php 结尾 $viewdefs['Opportunities']['EditView']['templateMeta']['includes'] = array ( array ( 'file' => 'path/to/file/filename.js', ), );
  2. 将要包含的 javascript 文件添加到您要包含的位置 上面已引用。
  3. 从管理部分快速修复,然后刷新浏览器