サブパネル

出典: SugarForum.jp

目次

サブパネルとは?

詳細ビュー(DetailView)などで、画面下部に表示されるパネルのこと。詳細ビューに表示されているオブジェクトの関連項目のリストが表示される。


モジュールごとに表示項目を変える

サブパネルは何のモジュールの詳細ビューから呼び出されているかに応じて、表示する項目を変えることも可能。読み込む側のLayoutDefsでどのサブパネルを使うか指定する。(指定がないと、デフォルトのサブパネルになる)


定義の場所

SugarRoot/modules/@モジュール名/metadata/subpaneldefs.php
SugarRoot/modules/@モジュール名/metadata/subpanels/default.php
SugarRoot/modules/@モジュール名/metadata/subpanels/@サブパネル名.php

※または、customディレクトリ内に。

クイック作成(quick create)

サブパネル内で、オブジェクトの作成が完結する仕組み。サブパネルに「クイック作成」ボタンがある場合、クリックするとListViewが一時的に隠れ(スタイルシートでdisplay:hiddenになる)、オブジェクトを追加するためのEditViewがAjaxな方法で呼び出される。必要項目を入力して「保存」すると、元のListViewが再表示される。

クイック作成時のEditViewを通常と違うものにすることも可能。詳しくはクイック作成ビューの拡張を参照。

Tips

サブパネルに関するTips。

サブパネル内の表示項目数を変える

Sugarの設定ファイルで、$sugar_config['list_max_entries_per_subpanel'] を変更します。デフォルトは10です。一律に適用されるため、表示項目数をサブパネルごと変更することはできません。

サブパネルごとに変更するには、ソースコードの一部改変が必要です。サブパネル内の表示項目数を個別に設定する を参照のこと。

リレーションフィールドの自動入力

クイック作成では、リレーションフィールドが自動的に入力されるはずです。ただし、リレーションを設定するフィールドの名称に制約があるので注意が必要。仮に、InvoicesとBankAccountsというモジュールにリレーション(リンク)を設定しているとすると、Invoicesのvardefsには、bankaccount_idおよびbankaccount_nameという名称でフィールドが存在している必要があります。省略して、account_idなどにしているとハマるので注意。

まとめると、リレーション(一対多)を設定する場合、フィールド名は

  • 小文字単数 + '_id'
  • 小文字単数 + '_name'

としておきましょう。

フィールド名を変更できない場合は、additional_form_fieldsを設定するか、既成のウィジェット(SugarWidgetSubPanelTopButtonQuickCreate)を使うのをあきらめて、独自のウィジェットクラスを作成する手もあります。


最終更新 04:42, 2008年12月7日 (日)。   このページは 3,897 回アクセスされました。