2011-09-13 8 views
1

ユーザのアクションの監査に使用できるクラスはありますか? レコードを追加、削除、変更することで、ユーザーが行う操作を意味しますか?アクションのログの実装

私はphpmyeditを使用していましたが、「logtable」オプション()を使用して、その特別なテーブルへのアクティビティを「監査」または追跡することができます。

$f->update()の前にこれを行うことは可能ですか(たとえば)実装する必要がありますか?

答えて

0

このようなクラスはありませんが、これを複数回実装しました。これには、標準のModel_Tableクラスを「プッシュ」して、すべてのモデルに機能を組み込む必要があります。ここはレシピです。

  1. 監査ログモデルクラスを作成します。 Model_AuditLogはおそらく良い名前になります。
  2. lib/Model/Table.phpにファイルを作成します。このファイルは、以下のコードに基づいて、すべてのモデルの共通の祖先を置き換えます。
  3. あなたが成功した操作にのみ関心がある場合は、「beforeInsert」から「アップデート」を省略することができます

をのBeforeUpdate/afterUpdateのための同様のコードを書くとbeforeDelete/afterDelete。いくつかのテストを作成します。再帰を避けるためにModel_Auditがあなたのクラスを継承しないことを忘れないでください。実際にクラスに名前を付けられるのは、モデルのために使うことを忘れない限りです。

アジャイルツールキットは、コントローラ経由でシームレスな監査サポートを提供します。


class Model_Table extends Model_MVCTable { 

    function beforeInsert($data){ 
     $this->insert_audit = $this->add('Model_Audit') 
      ->set('action','insert'); 
     $this->insert_audit->update(); 
     return parent::beforeInsert($data); 
    } 
    function afterInsert($id){ 
     $this->insert_audit->set('is_completed',true) 
      ->update(); 
     return parent::afterInsert($id); 
    } 
} 
関連する問題