ビューの作成

出典: 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()を表示するカスタムビューを参照。


最終更新 17:42, 2009年2月6日 (金)。   このページは 4,555 回アクセスされました。