詳細ビューで入力日と最終更新日を常に表示する
出典: SugarForum.jp
detailviewdefsで設定して、入力日などを表示することもできますが、無駄に画面の場所を取る上に、全てのモジュールで設定していると面倒です。ViewDetailクラスを継承して、
- 入力日 + 入力者
- 最終更新日 + 更新者
を常に表示するようにすると、便利です。
ここでは、ビュークラスを継承する一例として方法を紹介します。
目次 |
STEP - 1 : ビュークラスの作成
#custom/include/MVC/View/views/view.detail2.php
require_once('include/MVC/View/views/view.detail.php');
class ViewDetail2 extends ViewDetail{
function ViewDetail2(){
parent::ViewDetail();
}
function display(){
parent::display();
global $app_strings;
echo "<p style='text-align:right; color:grey;'>
{$app_strings['LBL_DATE_ENTERED']} {$this->bean->date_entered}
by {$this->bean->created_by_name}
{$app_strings['LBL_DATE_MODIFIED']} {$this->bean->date_modified}
by {$this->bean->modified_by_name}</p>";
}
}
STEP - 2 : DetailViewアクションの上書き
上記のクラスを作成しただけでは、既存のViewDetailクラスが使われてしまうので、DetailViewアクションが呼ばれた際にViewDetail2クラスが参照されるようにする必要があります。ここでは、controller.phpファイルを用意して、アクションを上書きする方法をとります。
モジュール名がMyModuleだとして説明します。
# modules/MyModule/controller.php
class MyModuleController extends SugarController
{
function action_DetailView() {
$this->view = 'detail2';
}
}
もともと'detail'が指定されているところを、'detail2'に上書きしています。これだけで、STEP-1で作成したViewDetail2クラスを使用するようになります。
ViewDetail2を使いたい他のモジュールも同様に設定して下さい。作業は以上でOKです。
アクションとビューの対応について
- URL : index.php?module=MyModule&action=DetailView
- アクション : action_DetailView()
が対応し、
- ビューの指定: detail2
- ファイル名 : view.detail2.php
- ビュークラス名ViewDetail2
が対応しています。
補記
上記の例では、入力日と更新日だけ表示していますが、少しコードを加えればアサイン先ユーザなども併記することができます。試してみて下さい。