为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
繁星点点滴滴 2022-09-17 22:26:05
我想将CRUD操作或任何其他活动(例如登录成功/失败的尝试以及任何用户帐户创建/删除)存储到我的数据库中的表,即.TRASACTION_LOG_TABLE我写了很多控制器和动作,所以我有任何有效的方法来做活动日志。我如何能够为每个操作或多个控制器中的一组操作执行一个函数来调用该特定函数并向数据库中添加一个条目。
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您正在寻找活动日志:


你可以在其中创建一个公共类和一个静态方法,例如,


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);

            });

        },

        ...

    ],

    ...

];


查看完整回答
反对 回复 2022-09-17
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信