实施行动日志

时间:2011-09-13 18:25:45

标签: atk4

是否有可用于审核用户操作的课程? 我的意思是用户使用添加,删除或修改记录的操作?

前段时间我使用过phpmyedit,它有一个“logtable”选项($opts['logtable'] = 'changelog';),可以用来“审核”或跟踪该特殊表的活动。

是否可以这样做或者我必须在$f->update()之前实现它(例如)?

1 个答案:

答案 0 :(得分:0)

没有这样的课程,但我已多次实施。这涉及“推送”标准的Model_Table类,以在所有模型中包含功能。这是食谱。

  1. 创建审核日志模型类。 Model_AuditLog可能是一个好名字。
  2. 在lib / Model / Table.php中创建文件,它根据下面的代码替换所有模型的共同祖先。
  3. 为beforeUpdate / afterUpdate和beforeDelete / afterDelete编写类似的代码
  4. 如果您只对成功的操作感兴趣,可以省略“beforeInsert”中的“update”。创建一些测试。不要忘记确保Model_Audit不继承您的类以避免递归。实际上,只要你记得将它用于模型,你就可以用不同的方式命名类。

    Agile Toolkit将在某些时候通过Controller提供无缝的审计支持,最有可能是4.2。


    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);
        }
    }