首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Moodle Events API

Moodle Events API
EN

Stack Overflow用户
提问于 2020-12-15 15:56:59
回答 1查看 405关注 0票数 1

我正在尝试为Moodle开发一个插件,使用Events API,在创建新的博客帖子时发送电子邮件。我使用以下结构创建了插件:

代码语言:javascript
复制
blog_observer/
├── classes
│   └── observer.php
├── db
│   └── events.php
└── version.php

db/events.php

代码语言:javascript
复制
defined('MOODLE_INTERNAL') || die();

$observers = array(
    array(
        'eventname'   => '\core\event\blog_entry_created',
        'callback'    => '\blog_observer\blog_observer::blog_created',
    ),
);

我从这里得到了事件名,/blog/locallib.php

classes/observer.php

代码语言:javascript
复制
namespace blog_observer;

defined('MOODLE_INTERNAL') || die();

class blog_observer {

    /**
     * The observer monitoring all the events.
     *
     * @param \core\event\base $event event object.
     * @return bool
     */
    public static function blog_created(\core\event\base $event) {
        file_put_contents('php://stderr', print_r("observed an event", TRUE));

        return false;

    }
}

然而,我没有看到那个日志,好像它甚至没有到达那个类,为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-18 16:08:52

我想出来了,是名字空间.

因此,更新的文件是(我还将插件重命名为newsletter):

代码语言:javascript
复制
newsletter/
├── classes
│   └── observer.php
├── db
│   └── events.php
└── version.php

db/events.php

代码语言:javascript
复制
defined('MOODLE_INTERNAL') || die();

$observers = array(
    array(
        'eventname'   => '\core\event\blog_entry_created',
        'callback'    => '\local_newsletter\observer::blog_created',
    ),
);

classes/observer.php

代码语言:javascript
复制
namespace local_newsletter;

defined('MOODLE_INTERNAL') || die();

class observer {

// The rest is same here

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65309346

复制
相关文章

相似问题

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