【问题标题】:How to use event trigger library ?如何使用事件触发库?
【发布时间】:2023-03-12 16:40:02
【问题描述】:

试图了解如何在 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。

【问题讨论】:

    标签: php codeigniter event-handling


    【解决方案1】:

    从不从您的后控制器调用 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 扩展帖子控制器

    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');
        }
    }
    

    【讨论】:

    • 感谢您的详细回答。只是为了确保我使用的是 HMVC,而MX_Controller 来自 HMVC。因此,如果我将扩展 System_Events,Posts 仍然可以作为模块工作吗?
    • System_Events extends MX_ControllerPosts extends System_Events,它只是多级继承。
    • 您将能够从您的帖子控制器的 MX_Controller 和 System_Events 访问公共和受保护的方法
    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 2011-11-28
    • 2017-01-11
    • 1970-01-01
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多