1

アクション フックに依存せずに、SugarCRM サブパネルに表示されるコンテンツを変更する方法はありますか?

現在、サブパネル フィールドのコンテンツを編集するには、次のようなフックを使用する必要があります...

$hook_array['process_record']

そして、呼び出すフックを割り当てた Class メソッドで、サブパネルのフィールドを次のように変更できます...

$bean->name = '<a href="/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3Dproje_Web_Project_Tasks%26action%3DDetailView%26record%3D'
.$bean->id.'" rel="popover" data-content="'
.$bean->description.'" data-original-title="">'.$bean->name.'</a>';

この方法で私たちが抱えている主な問題は、これらのアクションのいずれかを実行するまでうまく機能することです....

  1. クイック作成フォームを使用してアイテムを追加する
  2. サブパネルのページング ボタンを使用してページを変更する

いずれの場合も、データに対してこのフック コードを実行せずにサブパネル データをリロードするため、編集したサブパネル フィールドが編集されなくなり、通常どおり表示されるため、結果は非常に重要です。

これは基本的な例です...これは、上記のフック方法を使用して編集された2〜3個のフィールドを示しています...
ここに画像の説明を入力

サブパネルで新しいレコードをページングまたはクイック作成した後、サブパネルのデータをリロードし、フックされたコードを適用しないため、結果が次のようになることがわかります...
ここに画像の説明を入力

ListView同じ編集を適用して常に機能させることができる方法を使用して、コンテンツを編集するためのはるかに信頼性が高く柔軟な方法があることを私は知ってget_list_view_data()います!

サブパネルデータを編集する同様の方法があり、常にそのデータに編集を適用することを望んでいますか? 私がこれまでの研究で見てきたことから、常に期待どおりに機能する唯一の解決策は、完全に新しいCustom Field Type!

サブパネルで編集する必要があるフィールドの種類ごとにそれを行うのは大きな苦痛であり、サブパネル以外の他のすべてを編集する簡単な方法がある場合は気分が悪いので、それが唯一の方法ではないことを本当に望んでいますデータ。

過去数か月で SugarCRM を使用して開発を開始して以来、これが主な問題であるため、この問題について共有してください。

4

1 に答える 1

4

カスタムクエリを作成してサブパネルのデータを取得することで、データを変更できます。

したがって、Bean(この場合は連絡先)内で機能を実行します。

function get_project_list() {
   $query = "SELECT project, info, matching, column, names FROM projects WHERE contact_id = '" . $this->id . "' AND deleted = 0"
   return $query;
}

サブパネル定義で、データ ソースを次のように設定します。

$layout_defs["Contacts"]["subpanel_setup"]['projects'] = array(
        'order' => 10,
        'sort_order' => 'desc',
        'sort_by' => 'name',
        'title_key' => 'LBL_PROJECTS_TITLE',
        'subpanel_name' => 'contact_projects',
        'module'=>'projects',
        'get_subpanel_data' => 'function:get_project_list',
        'function_parameters'=>array('type'=>'urgent'), // this is optional if you decide to sent parameters to the function if do this dont forget to define your function with function get_project_list($params)
        'top_buttons' => array (... buttons that you need go here..),
);

SQLは非常に強力なので、サブパネルのデータを好きなように変更できます:)

于 2013-11-29T14:25:13.100 に答える