【发布时间】:2017-08-27 06:41:53
【问题描述】:
由于我是 CakePHP 的新手,我有一些简单的问题我无法弄清楚。
我使用的是 CakePHP 3.4。我尝试编写一个简单的记录器功能。应用到记录的每个更改,我都希望记录到 ChangeLog 模型中。
使用 afterSave() 事件,我有以下代码:
public function afterSave($event, $entity, $options) {
$logTable = TableRegistry::get('ChangeLogs');
foreach ($entity->getDirty() as $key) {
if($key != 'modified') {
$record = $logTable->newEntity();
$record->previous_value = $entity->getOriginal($key);
$record->new_value = $entity[$key];
$record->table_name = 'Stars';
$record->column_name = $key;
$record->row_id = $entity->id;
$record->user_id = [what should i put here?]
$record->user_id = $_SESSION['Auth']['user']['id'];
$logTable->save($record);
}
}
效果很好,但是我也想知道是哪个用户进行了操作,不知道如何在Model中获取当前用户。
我尽量避免在控制器中传递参数,因为我希望自动检测用户,并且作为开发人员,我不想每次尝试在控制器中更改/添加新功能时都记住它。
【问题讨论】:
标签: authentication cakephp logging cakephp-3.0 audit-logging