首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cmsmadesimple事件是如何发送的?

cmsmadesimple事件是如何发送的?
EN

Stack Overflow用户
提问于 2014-02-19 18:57:32
回答 1查看 81关注 0票数 0

需要有关cmsmadesimple事件的帮助。我正在尝试处理模块和事件OnLogin。此模块在method.install.php中启动此事件:

代码语言:javascript
复制
$this->CreateEvent( 'OnLogin' );

在我的Civicrm模块method.instal.php中,我注册了OnLogin处理程序:

代码语言:javascript
复制
$this->AddEventHandler( 'FrontEndUsers', 'OnLogin' );

那么,让我们开始吧。FrontEndUser在action.do_login.php中发送此事件时使用:

代码语言:javascript
复制
$parms = array();
$parms['id'] = $this->LoggedInId();
$parms['username'] = $params['feu_input_username'];
$parms['ip'] = cge_utils::get_real_ip();
$this->SendEvent( 'OnLogin', $parms );
$this->_SendNotificationEmail('OnLogin',$parms);

我在CiviCRM模块中这样做:

代码语言:javascript
复制
public function DoEvent($originator, $eventname, &$params)
{
    if ($originator == 'FrontEndUsers' && $eventname == 'OnLogin')
        var_dump($params);
        die("feulogin");
    }
}

当你进行前台登录时,脚本会像预期的那样终止,但当你尝试调试$params时,却搞不懂事件是如何发送的,因为甚至注释掉了:

代码语言:javascript
复制
//$this->SendEvent( 'OnLogin', $parms ); 

DoEvent()也处理事件(带消息退出脚本)。

在发送OnLogin事件的FrontEndUsers中找不到更多的代码,所以请帮我找出来。

EN

回答 1

Stack Overflow用户

发布于 2014-02-20 20:24:06

我自己解决的。FrontEndUsers从modules/FrontEndUsers/lib/class.FrontEndUsersManipulator.php:发送事件

代码语言:javascript
复制
function Login( $username, $password, $groups = '', $md5pw = false, $force_logout =false)
{
$module->SendEvent('OnLogin',array('id'=>$uid,'username'=>$username,'ip'=>$ip));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21878456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档