首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何做出改变?

如何做出改变?
EN

Stack Overflow用户
提问于 2013-12-09 14:20:03
回答 2查看 1.5K关注 0票数 0

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

所有这些都应该是Database-Driven,在PHP中,并且至少需要一个View来搜索Logs

但简而言之,我完全不知道如何设计所有这些,需要一些提示或灵感,也许其他人已经做了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-09 14:30:32

我过去就这样做过,基本上找到了两种方法:基于模型的方法和基于控制器的方法。

  • 模型中基于模型的本身覆盖saveupdate方法(假设是ActiveRecord模式),以在ChangeLog表中创建一个新条目。
  • Controller-basedChangeLog记录创建逻辑添加到要跟踪的每个控制器。

我更喜欢Controller-based方法,因为您可以更好地控制所发生的事情和发生的时间。此外,您可以完全访问用户会话,因此可以更容易地为审计目的添加跟踪。

票数 1
EN

Stack Overflow用户

发布于 2013-12-09 16:55:42

用我最初的想法解决这个问题要容易得多。大多数情况下,这应该是没有评论的:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20472863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档