7

[アドレス]パネルの[国]テキストフィールドをドロップダウンに変更したいと思います。これどうやってするの?

4

1 に答える 1

10

SugarCRM 6.x:

1)国フィールドのvardefを作成または更新します。

custom / Extension / modules / [MODULE_NAME] /Ext/Vardefs/custom_primary_address_country.php

$dictionary['<MODULE_NAME>']['fields']['primary_address_country']['comments']='Country for primary address';
$dictionary['<MODULE_NAME>']['fields']['primary_address_country']['group']='primary_address';
$dictionary['<MODULE_NAME>']['fields']['primary_address_country']['options']='countries_dom';
$dictionary['<MODULE_NAME>']['fields']['primary_address_country']['type']='enum';

2)アドレスフィールドの編集ビューテンプレートをコピーします。

include / SugarFields / Fields / Address / EditView.tpl

/ custom内の新しいディレクトリに:

custom / include / SugarFields / Fields / [CUSTOM_TYPE_NAME] /EditView.tpl

3)テンプレートを編集し、以下を変更します。

<input type="text" name="{{$country}}" id="{{$country}}" size="{{$displayParams.size|default:30}}" {{if !empty($vardef.len)}}maxlength='{{$vardef.len}}'{{/if}} value='{$fields.{{$country}}.value}' tabindex="{{$tabindex}}">

に:

<select name="{{$country}}" width="{{$displayParams.size|default:30}}" id="{{$country}}" title="{{$vardef.help}}" tabindex="{{$tabindex}}" {{if isset($displayParams.script)}}{{$displayParams.script}}{{/if}}>
{if isset($fields.{{$country}}.value) && $fields.{{$country}}.value != ''}
 {html_options options=$fields.{{$country}}.options selected=$fields.{{$country}}.value}
{else}
 {html_options options=$fields.{{$country}}.options selected=$fields.{{$country}}.default_value}
{/if}
</select>

4)custom / modules / [MODULE_NAME] /metadata/editviewdefs.phpで、「type」を新しいカスタムタイプ名に変更します。

    0 => 
      array (
        'name' => 'primary_address_country',
        'hideLabel' => true,
        'type' => '<CUSTOM_TYPE_NAME>',
        'displayParams' => 
        array (
          'key' => 'primary',
          'rows' => 2,
          'cols' => 30,
          'maxlength' => 150,
        ),
        'label' => 'LBL_PRIMARY_ADDRESS_COUNTRY',
      ),

5.テキストフィールドからドロップダウンに変更する国のフィールドごとに、手順1と4を繰り返します。以前に入力した値については、それらが「countries_dom」内の値と一致することを確認する必要があります。

SugarCRM 7.xでは、これはより単純であり、ステップ1を実行するだけで済みます。

于 2013-03-21T18:24:59.687 に答える