不會觸發我創建了一個插件在這個位置moodle/local/redirectafterlogin
結構如下:Moodle的事件觀察本地插件
redirectafterlogin/
├── db
│ ├── classes
│ │ └── observer.php
│ └── events
│ └── events.php
└── version.php
version.php:
defined('MOODLE_INTERNAL') || die();
$plugin->version = 20170333;
$plugin->requires = 2015111000;
$plugin->component = 'local_redirectafterlogin';
events.php:
defined('MOODLE_INTERNAL') || die();
$observers = array(
array(
'eventname' => 'core\event\user_loggedin',
'callback' => 'local_redirectafterlogin_observer::user_loggedin',
),
array(
'eventname' => 'core\event\user_loggedout',
'callback' => 'local_redirectafterlogin_observer::user_loggedin',
),
);
observer.php:
class local_redirectafterlogin_observer
{
public static function user_loggedin(core\event\base $event)
{
$event_data = $event->get_data();
var_dump($event_data);
die();
}
}
緩存已被清除了很多時間,版本號也被撞到了,但回調從未被調用過!
- 怎麼回事,爲什麼沒有觸發回調?
- 我該如何調試事件(在Moodle中有沒有辦法查看調度事件)?
該插件的目的只是重定向到一個'用戶/ edit.php'頁面時,一些額外的個人資料欄不填寫。 爲什麼你說事件處理程序中不允許重定向?在我看來,核心\事件\ user_loggedin'事件分派執行這種操作?不是嗎? –
事件往往是通過某些處理的一部分進行的(例如,您可能有一個創建新用戶的插件,然後在課程中引用它們 - 這會觸發'user_created'事件,然後再發生'user_enrolment_created'事件;或者,創建多個用戶帳戶的腳本會生成多個事件)。事件也可能由多個處理程序處理。如果您允許事件處理程序通過該處理重定向部分路徑,那麼該網站可能會處於非常壞的狀態。 – davosmith