Moodle 活动 API
Moodle Events API
我正在尝试为 Moodle 开发一个插件,使用事件 API 将在创建新博客 post 时发送电子邮件。我用以下结构创建了我的插件:
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;
}
}
但是我没有看到那个日志,好像它甚至没有到达那个 class,为什么?
我明白了,是命名空间...
所以更新的文件是(我也将我的插件重命名为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
}
我正在尝试为 Moodle 开发一个插件,使用事件 API 将在创建新博客 post 时发送电子邮件。我用以下结构创建了我的插件:
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;
}
}
但是我没有看到那个日志,好像它甚至没有到达那个 class,为什么?
我明白了,是命名空间...
所以更新的文件是(我也将我的插件重命名为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
}