Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Moodle 在测验尝试前后执行一些逻辑_Moodle_Moodle Api - Fatal编程技术网

Moodle 在测验尝试前后执行一些逻辑

Moodle 在测验尝试前后执行一些逻辑,moodle,moodle-api,Moodle,Moodle Api,我正在使用“\mod\u quick\event\trument\u started”事件观察器,但没有得到任何结果、php错误消息或日志 我正在为leader board功能创建自己的本地插件,但我被事件观察者的呼叫卡住了 在events.php文件中 $observers = array( array('eventname' => '\mod_quiz\event\attempt_started', 'includefile'=> '/local/le

我正在使用“\mod\u quick\event\trument\u started”事件观察器,但没有得到任何结果、php错误消息或日志

我正在为leader board功能创建自己的本地插件,但我被事件观察者的呼叫卡住了

在events.php文件中

$observers = array(
    array('eventname' => '\mod_quiz\event\attempt_started',
          'includefile'=> '/local/leaderboard/locallib.php',
          'callback' => 'quiz_attempt_started',
          'internal' => 1
    ),
    array('eventname' => '\mod_quiz\event\attempt_submitted',
          'includefile' => '/local/leaderboard/locallib.php',
          'callback' => 'quiz_submitted_start'
    ),
);
在locallib.php中

function quiz_attempt_started($event) {
    file_put_contents('/local/leaderboard/log.txt', $event);
    //Logic Here
}

function quiz_submitted_start($event) {
    file_put_contents('/local/leaderboard/log.txt', $event);
    // Logic Here
}
在进行调试时,moodle会显示错误

PHP注意事项:事件观察者“测验尝试提交”中遇到异常:检测到编码错误,必须由程序员修复:PHP可捕获致命错误
-\local\leadboard\lib.php的第20行:调用default\u error\u handler()
-线路?未知文件:对测验的调用\u尝试\u提交()
-\lib\classes\event\manager.php的第155行:调用\u user\u func()
-\lib\classes\event\manager.php的第89行:调用- 核心\事件\管理器::进程\缓冲区() -\lib\dml\moodle\u database.php的第2489行:调用core\event\manager::database\u transaction\u committed()
-\lib\dml\moodle\u transaction.php的第92行:调用moodle\u数据库->提交委托的\u事务() -\mod\quick\attemplib.php的第2221行:调用moodle\u transaction->allow\u commit()
-\mod\quick\processtrunt.php的第88行:调用quick\u trunt->process\u trunt()
在第3096行的E:\Moodle\u Boost\03\u Execution\04\u Tech\03\u Source Code\lms\lib\weblib.php中


在这里注意得到错误或结果。我是忘了还是做错了什么

您是否增加了插件的version.php文件并进行了升级?若并没有,那个么Moodle将不会注意到新的观察者。是的,我在版本文件中也增加了版本。调试正在进行吗?您是否尝试过使用xdebug并在事件处理程序中设置断点?在上调试后,我得到了“在事件观察者的测验中遇到异常”\u尝试\u提交:检测到编码错误”。好了,看看您的代码,我认为您不能调用任意对象上的文件\u put\u内容并期望它工作-您可能需要使用ob\u start(); 变量转储($事件)$out=ob_get_clean();文件内容('/local/leadboard/log.txt',$out);