サブパネル
出典: 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)を使うのをあきらめて、独自のウィジェットクラスを作成する手もあります。