詳細ビューで入力日と最終更新日を常に表示する

出典: 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

が対応しています。

補記

上記の例では、入力日と更新日だけ表示していますが、少しコードを加えればアサイン先ユーザなども併記することができます。試してみて下さい。


最終更新 08:11, 2008年4月29日 (火)。   このページは 1,485 回アクセスされました。