hrxf168 2017-11-20 12:37:03 4050次浏览 1条评论 5 1 0

比如在backend后端用户登陆后,我们记录日志或者做一些处理...

一、配置文件中直接写handler

'components' => [
    'user' => [
        'identityClass' => 'common\models\Adminuser',
        'enableAutoLogin' => true,
        'on afterLogin' => function($event){
            Yii::info('登陆用户:' . $event->identity->nickname,__METHOD__);
        },
    ],
]

代码写在配置文件,总觉得有些low...

二、handler的代码写到自己的工具类中

'components' => [
    'user' => [
        'identityClass' => 'common\models\Adminuser',
        'enableAutoLogin' => true,
        'on afterLogin' => ['common\models\Olog','add'],
    ],
 ]

我这里用自定义的工具类 'common\models\Olog' 中定义的方法'add'来处理事件...
初次发文,不当之处,请高手指正

觉得很赞
  • 评论于 2017-11-24 17:53 举报

    补充:

    1. 以上方法仅适应于处理内置事件,因为内置事件的trigger动作由框架的代码在适当的时机执行。
    2. 上面示例中,用到了afteLogin内置事件,这个内置事件是由yii\web\user组件(login方法)触发的,所以将事件绑定配置在user组件中,配置项名称为"on afterLogin",意思是监听内置的afterLogin事件,并绑定handler
    觉得很赞
您需要登录后才可以评论。登录 | 立即注册