将每个操作记录到数据库Yii2 [已关闭]

pepwfjgg  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(133)

已关闭。此问题需要更多的focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

两年前就关门了。
Improve this question
我希望将CRUD操作或任何其他活动(如登录成功/失败尝试以及任何用户帐户创建/删除)存储到我的数据库中的表(即TRASACTION_LOG_TABLE)中。
我写了很多控制器和动作,所以我有任何有效的方法来做活动日志。
我如何能够为多个控制器中的每个操作或一组操作执行一个函数,以调用该特定函数并向数据库添加一个条目。

iszxjhcz

iszxjhcz1#

您正在查找活动日志:
您可以创建一个公共类和一个静态方法,

classname::setActivityLog(user_id,activity_msg,time);

并将此代码放在您编写每个操作中。例如actionUpdate、actionDelete等。

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.

创建一个表和模型,就像ActivityLog一样。这是我在我的项目中所做的。

或者,这将有一些限制,例如您无法给予自定义消息或自定义操作名称

您可以在引导过程中创建一个类级事件处理程序,如下所示(最有可能在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);
            });
        },
        ...
    ],
    ...
];

相关问题