将每个操作记录到数据库 Yii2

我想将CRUD操作或任何其他活动(例如登录成功/失败的尝试以及任何用户帐户创建/删除)存储到我的数据库中的表,即.TRASACTION_LOG_TABLE

我写了很多控制器和动作,所以我有任何有效的方法来做活动日志。

我如何能够为每个操作或多个控制器中的一组操作执行一个函数来调用该特定函数并向数据库中添加一个条目。


繁星点点滴滴
浏览 85回答 1
1回答

慕妹3242003

您正在寻找活动日志:你可以在其中创建一个公共类和一个静态方法,例如,classname::setActivityLog(user_id,activity_msg,time);并将此代码放入您编写的每个操作中。例如,操作更新、操作删除等。you can get the `user_id` from `Yii::app()->user->id`put you custom activity message like "User #user_id created new item" etc.time you can get it while saving into database.创建一个表和模型,就像活动日志一样,这就是我在我的项目中所做的。或者,但这将有限制,例如您无法提供自定义消息或自定义操作名称您可以在 boostrap 进程中创建一个类级事件处理程序,如下所示(最有可能在 Web 中.php配置文件,该文件保存应用程序对象的配置):use yii\base\ActionEvent;use yii\base\Controller;use yii\base\Event;$config = [    ...    'bootstrap'    => [        ...        function () {            Event::on(Controller::class, Controller::EVENT_AFTER_ACTION, function (ActionEvent $event) {                Yii::info('Called controller/action: ' . $event->action->id . '/' . $event->action->controller->id);            });        },        ...    ],    ...];
打开App,查看更多内容
随时随地看视频慕课网APP