下午好,我正在为Windows平台上的Moodle平台版本“2023042400”-(4.2.2+)开发自己的插件(文件夹:本地)。
有这样一个需要订阅标准模块“测验”的事件,称为“发送所有内容并完成”。我需要在完成测试后得到所有错误的答案,并在界面中给出额外的信息,但现在我很乐意只签署数据。
使用的编程语言是“PHP”。
附注我是这个环境的新手,所以我很乐意详细描述解决方案。
文件路径: \local daptive_quiz ersion.php:
<?php
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2023090900; //version of plugin
$plugin->requires = 2023042400; //version of moodle
$plugin->pluginname = 'Adaptive Quiz';
$plugin->component = 'local_adaptive_quiz';
我尝试做很多Chat GPT建议我做的事情:
我通过error_log检查方法,每次都是我通过回调方法——before_footer检查。这里 before_footer 工作正常。
路径:\local daptive_quiz\lib.php:
检查插件可操作性的代码:
<?php
function local_adaptive_quiz_before_footer(){
error_log('лог сработал');
return \core\notification::add('Plugin Local adaptive quiz is worked! v8',
\core\output\notification::NOTIFY_SUCCESS);
}
带有变量“$handlers”的代码:
//code that checks the plugin for operability...
function local_adaptive_quiz_after_submit($attemptid) {
error_log('local_adaptive_quiz_after_submit worked');
//Answer of users...
$user_responses = "ответы пользователя";
echo json_encode($user_responses);
}
$handlers = array(
'quiz_attempt_submitted' => array(
'handlerfile' => '\local\adaptive_quiz\lib.php',
'handlerfunction' => 'local_adaptive_quiz_after_submit',
'schedule' => 'instant',
),
);
答案其实很简单。需要使用以下路径
\local\{name_your_plugin}\db\events.php
和以下代码来创建:
$observers = array(
array(
'eventname' =>'\mod_quiz\event\attempt_submitted', //name of event
'includefile' => '\local\adaptive_quiz\classes\attempt_event_submitted_observer.php', //file containing the callback function
'callback' =>'observe_one', //callback function
'internal' => false
),
);
沿着我们编写的路径 (
\local\adaptive_quiz\classes\attempt_event_submitted_observer.php
) 创建一个回调函数:
function observe_one($event) {
echo '<h1>observe_one is worked</h1>';
}
最主要的是你需要通过学生账号查看该功能。否则该功能不起作用。