1

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',
    );
   ?>

残念ながら、エラーはなく、修復/再構築は正常に実行されます。スタジオに入ると、カスタム フィールドが表示されません。誰かが私が間違っているかもしれないことを指摘するのを手伝ってもらえますか?

4

2 に答える 2

2

ファイルに新しく作成されたフィールド「list_of_makers」の存在を確認することをお勧めしcache/modules/Maker/Makervardefs.phpます。そのファイルに新しいフィールド定義が存在する場合は、追加'studio' => 'visible'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',
          'studio' => 'visible'
          'len' => '100',
          'comment' => 'List of makers populated from the database',
    );

上記のすべてが機能しない場合は、custom/modules/Maker/metadata/editviewdefs.php を手動で編集し、フィールド定義を適切な場所に手動で挿入してみてください。

于 2013-10-18T08:00:58.283 に答える