出于監控多用戶操作后臺的目的,往往需要把各個管理員操作了什么記錄下來。這個功能用yii2來實現簡直是太簡單了!下邊上代碼~
此demo基于advanced
在backend目錄創建components/AdminLog.php
<?php namespace backend\components; use Yii; use yii\helpers\Url; class AdminLog { public static function write($event) { // 具體要記錄什么東西,自己來優化$description if(!empty($event->changedAttributes)) { $desc = ''; foreach($event->changedAttributes as $name => $value) { $desc .= $name . ' : ' . $value . '=>' . $event->sender->getAttribute($name) . ','; } $desc = substr($desc, 0, -1); $description = Yii::$app->user->identity->username . '修改了' . $event->sender->className() . 'id:' . $event->sender->id . '的' . $desc; $route = Url::to(); $userId = Yii::$app->user->id; $data = [ 'route' => $route, 'description' => $description, 'user_id' => $userId ]; $model = new \common\models\AdminLog(); $model->setAttributes($data); $model->save(); } } }
在backend/config/main.php添加
'on beforeRequest' => function($event) { \yii\base\Event::on(\yii\db\BaseActiveRecord::className(), \yii\db\BaseActiveRecord::EVENT_AFTER_UPDATE, ['backend\components\AdminLog', 'write']); },
mysql中創建admin_log表
CREATE TABLE `admin_log` ( `id` int(10) NOT NULL AUTO_INCREMENT, `route` varchar(255) NOT NULL DEFAULT '', `description` text, `created_at` int(10) NOT NULL, `user_id` int(10) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
用gii生成AdminLog模型
php yii gii/model --ns=common\\models --modelClass=AdminLog --tableName=admin_log
掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://www.wangchenghua.com/post/4850/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料
查 看2022高級編程視頻教程免費獲取