SugarCRM のデータベースに入力されたドロップダウンの設定について、しばらく前にここで質問しました。私は本当に良い答えを受け取り、さらにphpの研究と開発インスタンスの実行を行った後、試してみることにしました。私が従った指示はここにあります。修復と再構築を実行した後、Studio のモジュールの下の [フィールド] リストにカスタム フィールドが表示されるはずですが、見つかりませんでした。モジュールの名前は Makers (データベース テーブルとしては a1_makers) です。念のため、ファイルを保存してから修復/再構築したところ、エラーは発生しませんでした。
指示に従って、最初にデータベースをクエリするためのカスタム関数を含む php ファイルを作成しました (custom/Extension/application/Ext/Utils/getMakers.php):
<?php
function getMakers() {
static $makers = null;
if (!$makers){
global $db;
$query = "SELECT id, name FROM a1_maker";
$result = $db->query($query, false);
$accounts = array();
$accounts[''] = '';
while (($row = $db->fetchByAssoc($result)) !=null) {
$accounts[$row['id']] = $row['name'];
}
}
return $makers;
}
?>
次に、関数を指すように Vardefs の「関数」フィールドを設定します (custom/Extension/modules/Maker/Ext/Vardefs/makers_template.php):
<?php
$dictionary['Maker']['fields']['list_of_makers'] = array (
'name' => 'list_of_makers',
'vname' => 'LBL_MKRLST'
'function' => 'getMakers',
'type' => 'enum',
'len' => '100',
'comment' => 'List of makers populated from the database',
);
?>
残念ながら、エラーはなく、修復/再構築は正常に実行されます。スタジオに入ると、カスタム フィールドが表示されません。誰かが私が間違っているかもしれないことを指摘するのを手伝ってもらえますか?