1

I'm using oxwall and I want to know how EventManager works on this platform for registering new methods on specific events with a simple example for triggering and binding an event to a process.

4

1 回答 1

1

这是一个触发事件并将其绑定到流程的示例。我的格式有点烂...

假设您正在创建一个用于创建用户帐户的插件。

/**
* Method to save user
*/
public function saveUser( $username, $password, $email, $accountType )
{
    $userService = BOL_UserService::getInstance();
    $user = $userService->createUser( $username, $password, $email, $accountType );

    //Set new event parameters
    $event = new OW_Event('plugin_key_custom_event_name', array(
        'userDto' => $user
    ));
    //Trigger an event for after registering user
    OW::getEventManager()->trigger($event );
}

将事件绑定到侦听器

您应该从您的事件处理程序类或您的插件 init.php 文件中执行此部分。

/**
*
* Bind Event
*/
class PLUGINKEY_CLASS_EventHandler
{
    public function sendUserWelcome( OW_Event $e )
    {
         $params = $e->getParams();
         $user = $params['userDto'];

         BOL_UserService::getInstance()->sendWellcomeLetter($user);         
    }

    public function init()
    {
        //bind sendUserWelcome() method to 'plugin_key_custom_event_name' event
        OW::getEventManager()->bind('plugin_key_custom_event_name', array($this, 'sendUserWelcome'));
    }
}

最后,您可以从 init.php 文件初始化事件处理程序。

$eventHandler = new PLUGINKEY_CLASS_EventHandler();
$eventHandler->init();
于 2018-05-28T20:41:19.127 回答