我正在尝试为Moodle开发一个插件,使用Events API,在创建新的博客帖子时发送电子邮件。我使用以下结构创建了插件:
blog_observer/
├── classes
│ └── observer.php
├── db
│ └── events.php
└── version.phpdb/events.php
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
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;
}
}然而,我没有看到那个日志,好像它甚至没有到达那个类,为什么?
发布于 2020-12-18 16:08:52
我想出来了,是名字空间.
因此,更新的文件是(我还将插件重命名为newsletter):
newsletter/
├── classes
│ └── observer.php
├── db
│ └── events.php
└── version.phpdb/events.php
defined('MOODLE_INTERNAL') || die();
$observers = array(
array(
'eventname' => '\core\event\blog_entry_created',
'callback' => '\local_newsletter\observer::blog_created',
),
);classes/observer.php
namespace local_newsletter;
defined('MOODLE_INTERNAL') || die();
class observer {
// The rest is same here
}https://stackoverflow.com/questions/65309346
复制相似问题