muf*_*fin 5 php audit controller model yii
我正在创建一个审计跟踪模块,我将放入一个更大的系统; 我创建了一个表来存储跟踪条目,作为"审计员"我想看到当前登录的用户,他/她所在的页面,他/她做了什么动作,以及改变了什么什么时候...
这些基本上是我想看到的; 我的审计跟踪表看起来像:
用户| 时间戳| 模块名称| 动作| 旧价值| 新价值| 描述
我基本上没有问题得到用户,通过
Yii::app()->session['username'];
Run Code Online (Sandbox Code Playgroud)
通过获取控制器的页面/模块和操作:
$this->module->getName();
$this->action->id;
Run Code Online (Sandbox Code Playgroud)
我的问题在于将旧值更改为新值,即用户执行的编辑.我可以通过字面复制变量并将其传递给我创建日志的函数来"嗅出"他/她所做的编辑/更改.我如何动态地执行此操作?
我有点想检测某个模型的属性或属性是否已被更改并查看所做的更改,以便我可以获得详细日志...谢谢!对不起,我真的很努力解释这一点.
快速举例:
class Book extends CActiveRecord
{
private $oldAttrs = array();
public static function model($className = __CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'book';
}
protected function afterSave()
{
// store history
if (!$this->isNewRecord) {
$newAttrs = $this->getAttributes();
$oldAttrs = $this->getOldAttributes();
// your code
}
return parent::afterSave();
}
protected function afterFind()
{
// Save old values
$this->setOldAttributes($this->getAttributes());
return parent::afterFind();
}
public function getOldAttributes()
{
return $this->oldAttrs;
}
public function setOldAttributes($attrs)
{
$this->oldAttrs = $attrs;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5612 次 |
| 最近记录: |