如何使用事件触发器库?

时间:2014-01-27 06:55:28

标签: php codeigniter event-handling

尝试了解如何在codeigniter https://github.com/ericbarnes/CodeIgniter-Events

中使用此事件侦听器库

我正在尝试发送邮件提交的电子邮件。我的帖子控制器如下

/**
* Posts
*/
class Posts extends MX_Controller
{

    function __construct(argument)
    {
        # code...
    }

    function post_new()
    {
        // all form validation and submission code

        Events::trigger('add_post', 'system_events', 'string');
    }
}

我创建了一个控制器,我将注册所有系统事件

/**
* System Events
*/
class System_Events extends MX_Controller
{

    function __construct(argument)
    {
        Events::register('add_post', array($this, 'shoot_email'));
    }


    function shoot_email()
    {
        // all email code here
    }

}

但是这不是在提交帖子时发送任何电子邮件。我实际上并不了解如何使用此事件库。

如果有任何其他方式来注册和触发事件,我也很好。但是没有硬编码到系统中,而是一种API。

1 个答案:

答案 0 :(得分:0)

永远不会从你的帖子控制器调用System_Events,试试这个

class System_Events extends MX_Controller{

    function __construct($eventName,$methodName){
        $this->load->library('events');
        Events::register($eventName, array($this, $methodName));
    }


    function shoot_email(){
        // all email code here
        return 'Mail Send';
    }

}

现在从system_events扩展posts控制器

class Posts extends System_Events{

    function __construct(argument){
        parent::__construct('add_post','shoot_email');//call the parent class constructor    
    }

    function post_new()
    {
        // all form validation and submission code

        Events::trigger('add_post', 'system_events', 'string');
    }
}