php - Moodle 事件 API
问题描述
我正在尝试为 Moodle 开发一个插件,使用将在创建新博客文章时发送电子邮件的事件 API。我使用以下结构创建了我的插件:
blog_observer/
├── classes
│ └── observer.php
├── db
│ └── events.php
└── version.php
db/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;
}
}
但是我没有看到那个日志,好像它甚至没有进入那个类,为什么?
解决方案
我想通了,它是命名空间......
所以更新的文件是(我也将我的插件重命名为newsletter
):
newsletter/
├── classes
│ └── observer.php
├── db
│ └── events.php
└── version.php
db/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
}
推荐阅读
- jquery - 无法在被动事件侦听器 jQuery Mobile 中阻止默认值
- c# - “INSERT 语句与 FOREIGN KEY 约束冲突”创建视图中 PDF 模型属性的错误
- ios - Swift-以编程方式导航控制器和标签栏控制器
- c# - 离开页面后保持页面滚动位置
- bash - 使用 grep 命令但仅用于文件的最后几行?
- javascript - 如何使用angular2根据列表中选定的对象过滤内容
- android - 如何使用 SharedPreferences 保存 MutableList?
- c# - 为什么无法解决组件中的类型 Castle Windsor
- javascript - 我应该如何实例化一个使用外部 const 要求的对象
- laravel - 调用字符串上的成员函数 send()