0

对于具有许多Database相关事件的 Web 应用程序,我想构建一个Changelog. 那应该记录用户所做的事情,所以它也是一个用户日志。该应用程序庞大,具有复杂的基于角色的用户访问系统,并且可能会发生数百个不同的事件(更改)。

这一切都应该在Database-DrivenPHP并且至少需要一个View来搜索Logs

但简而言之,我完全不知道如何设计这一切,需要一些技巧或灵感,也许其他人做了什么。

4

2 回答 2

1

我过去做过这个,基本上发现了两种方法:基于模型和基于控制器。

  • 基于模型的模型本身会覆盖saveupdate方法(假设是ActiveRecord模式)以在表中创建新条目ChangeLog

  • 基于控制器ChangeLog记录创建逻辑添加到您要跟踪的每个控制器。

我更喜欢基于控制器的方法,因为您可以更好地控制正在发生的事情和时间。此外,您拥有对用户会话的完全访问权限,因此可以更轻松地添加跟踪以进行审计。

于 2013-12-09T14:30:32.910 回答
0

正如我最初的想法所显示的那样,解决这个问题要容易得多。这应该在没有评论的情况下进行大多数时候:

protected function log($comment = ''){
    $user = $this->user();
    ORM::factory('Changelog')->vaules(array(
        'user_id' => $user->pk(),
        'section_id' => $user->section->pk(),
        'username' => $user->username.'@'.$user->section->name,
        'time' => time(),
        'uri' => $this->uri($this->request->param(), $this->request->query()),
        'controller' => $this->request->controller(),
        'action' => $this->request->action(),
        'post' => serialize($this->request->post()),
        'comment' => $comment,
    ))->save();
}

一个简单的 $this->log() 就完成了。

结果:http ://charterix.sourceforge.net/log.jpg

于 2013-12-09T16:55:42.503 回答