シリーズSugarCRM 4.5のカスタマイズのまとめ、5回目の今回は、SugarBeanを継承”する”場合についての「表示関連」です。
SugarCRMをカスタマイズするには、まあ、スタジオで、タブを消したり、ラベルの文字を変更したり、項目追加したりすることはできますが、大きく変更する場合は、モジュールの追加ということになります。
このとき、モジュールには2種類あり、新規テーブルを作成し、追加操作などをしない場合のSugarBeanを継承”しない”場合と、テーブルを作っていろいろ操作するSugarBeanを継承”する”場合があります。
そして、SugarBeanを継承”する”場合は、
(1)SugarBeanを継承しない場合にも必要なファイルたち
(2)データベース操作関連
モジュール名.php,vardefs.php,Save.php,Delete.phpなど
(3)表示関連
(3-1)一覧表示(ListView)と、検索
(3-2)詳細画面
(3-3)編集画面
(4)他のと関連
(4-1)サブパネル
(4-2)ポップアップ
(4-3)ダッシュレットなど、
とファイルが必要なのですが、いままでで(2)までやったので、今日は(3)です。
■表示方法に3種類
SugarBeanを継承した場合、表示方法に3種類あります。
(3-1)一覧表示(ListView)と、検索
(3-2)詳細画面
(3-3)編集画面
です。まず、タブをクリックされると、Sugarの下のindex.phpが呼び出されます。このとき、引数のmoduleはクリックしたモジュール名、actionは、indexだと思います。
そうすると、メイン画面には、modules/モジュール名/index.phpが表示されるわけですが、このindex.php,継承されないときは、好きに書いてよいのですが、継承する場合は、ここでListView.phpが呼び出され、一覧&検索画面が表示されます(ListView.phpから検索画面のSerachFormを読んでいます)。
詳細画面、編集画面はそれぞれ、index.phpの引数moduleがモジュール名、actionがDetailView(詳細画面の場合)またはEditView(編集画面の場合)を指定されて呼び出されます。
■一覧表示(ListView)と、検索
バージョンによって、違うのですが、4.5の場合は、モジュールの下のうち、
ListView.php
ListView.html
metadata/listviewdefs.php
が関連します。またListView.phpで、モジュール名.php(SugarBeanを継承しているクラス)が呼び出され、さらに検索用として、
metadata/SearchFields.php
が関係します。SearchFields.phpが検索項目の指定で、listviewdefs.phpが一覧表示項目だった気がします。なお、field_arrays.phpも関係していた気がします。
そして、上記のファイルから、Sugarのフォルダ/include/ListViewの下にあるPHPプログラムが呼び出されます(ここにあるのは全モジュール共通)とくにそこのListViewData.phpがデータ読み込み口です。
一方、検索に関しては、Sugarのフォルダ/include/SerchFormフォルダの下の、SearchForm.phpが実行します。generateSearchWhereでwhere句を作ってます。そことSearchFields.phpを見比べてもらうと、SearchFields.phpの書き方が分かります。
■詳細画面、編集画面
詳細画面は、
DetailView.php
DetailView.html
編集画面は、
EditView.php
EditView.html
PHPのほうで、処理して値を作り、htmlのほうで表示する仕組みになっています。
既存のソースを見れば、やり方はわかると思います。
ってなかんじです。次回はそれ以外のモノについて、見ていきます。