1

是否有任何类可用于审核用户的操作?我的意思是用户对添加、删除或修改记录所做的操作?

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

是否有可能做到这一点,还是我必须在之前(例如)实施它$f->update()

4

1 回答 1

0

没有这样的类,但我已经实现了好几次了。这涉及“推送”标准 Model_Table 类以将功能包含到所有模型中。这是食谱。

  1. 创建您的审计日志模型类。Model_AuditLog 可能是个好名字。
  2. 在 lib/Model/Table.php 中创建文件,它根据下面的代码替换所有模型的共同祖先。
  3. 为 beforeUpdate / afterUpdate 和 beforeDelete / afterDelete 编写类似的代码

如果您只对成功操作感兴趣,则可以从“beforeInsert”中省略“更新”。创建一些测试。不要忘记确保 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);
    }
}
于 2011-09-13T19:45:41.237 回答