ビューの作成
出典: SugarForum.jp
目次 |
標準のビューを使う
Sugarでは主に3つのビューを使用します。
- リストビュー(list): ListViewアクションから呼び出されます。
- 詳細ビュー(detail): DetailView?アクションから呼び出されます。
- 編集ビュー(edit): EditView?アクションから呼び出されます。
新しくモジュールを作成する場合、標準のままで構わなければ特にコードを書く部分はありません。何をどの順で配置するかといったことは、metadataを定義すればOKです。
SugarRoot/modules/@モジュール名/metadata/listviewdefs.php SugarRoot/modules/@モジュール名/metadata/detailviewdefs.php SugarRoot/modules/@モジュール名/metadata/editviewdefs.php
ビュークラスをカスタマイズする
metadataで制御できる部分は限られているため、不十分なことがあります。独自のビューにカスタマイズするには、SugarViewを継承したクラスを作成します。標準のビュークラスが下記フォルダにあるので、これらのクラスを継承してもOKです。
SugarRoot/include/MVC/View/views/view.list.php SugarRoot/include/MVC/View/views/view.detail.php SugarRoot/include/MVC/View/views/view.edit.php
定義の場所
SugarRoot/modules/@モジュール名/views/view.@ビューの種類.php
クラスの記述について
クラス名には、接頭辞としてモジュール名を付けます。例えば、Contactsモジュールの編集ビュークラスは、
require_once('include/MVC/View/views/view.edit.php');
class ContactsViewEdit extends ViewEdit {
//クラス定義...
}
といった具合になっています。最低限、必要なのはdisplay関数です。ここでHTMLの出力が行われます。標準のビューを一切使わずに、好きなHTMLを記述してしまうことも可能です。
function display() {
//先にビューの設定をしてから...
echo $this->ev->display();//HTMLの出力 (←この例は編集ビューの場合)
}
ヘッダー(ロゴおよびタブ)やフッターなどを非表示したいこともあると思います。その場合は、コンストラクタで
$this->options['show_header'] = false; $this->options['show_footer'] = false; $this->options['show_subpanels'] = false;
などを指定しておきましょう。
ビューのカスタマイズ例
いくつかの例を紹介したいと思います。
リストビューで削除ボタンや一括更新パネルを表示しない
誤操作を防ぐために、リストビューから削除や一括更新ができない方が良いことがあります。独自のビューを作成して、ListViewクラスのインスタンスに属性を変更すれば、そういった設定も可能です。
方法は、リストビューで削除ボタンや一括更新パネルを表示しない 参照。
詳細ビューで入力日と最終更新日を常に表示する
detailviewdefsで設定して、入力日などを表示することもできますが、無駄に画面の場所を取る上に、全てのモジュールで設定していると面倒です。ViewDetailクラスを継承して、
- 入力日 + 入力者
- 最終更新日 + 更新者
を常に表示するようにすると、便利です。
方法は、詳細ビューで入力日と最終更新日を常に表示する 参照。
phpinfo()を表示する
phpinfo() の内容を表示するだけ、というビュー。
これは、実用的というよりも、こんなこともできるという一例です。
方法は、phpinfo()を表示するカスタムビューを参照。