Moodle moodle_page::set_state:无效状态错误
Moodle moodle_page::set_state : Invalid state error
在本地插件的页面中,$OUTPUT->header(); 出现错误:
检测到编码错误,必须由程序员修复:传递给 moodle_page::set_state 的状态无效。我们处于状态 1,请求状态 1。
我已经检查过 google 原因可能是对 $OUTPUT->header();
的第二次调用
但是没有第二个电话
另外,令人疑惑和惊讶的是,其他页面都没有报错,包括,类似其他本地插件,只有这个本地插件页面有报错。
此外,我尝试了 $OUTPUT->has_started() ,它 returns false.
另外,$PAGE->state 是 0 ,就在调用 header 之前。
Moodle 版本 2.8
请多多指教
编辑:
require_once('../../config.php');
require_login();
global $CFG,$PAGE;
$PAGE->set_context(context_system::instance());
$PAGE->set_pagelayout('standard');
$PAGE->set_title('');
$PAGE->set_heading('');
$PAGE->set_url($CFG->wwwroot.'/local/tpmg/pending-manual.php');
if( ! $OUTPUT->has_started() )
{
// echo $PAGE->state;exit;
echo $OUTPUT->header();
}
if( isloggedin() )
{
require_once('lib.php');
$pmQuizzesObj = get_pm_quizzes();
if( $pmQuizzesObj->pendingAttsCount )
{
$pmQuizzesArr = $pmQuizzesObj->quizzesArr;
echo get_string( 'tpmgpano','local_tpmg' ) . " : " . $pmQuizzesObj->pendingAttsCount . "<br/>";
// Here goes table for Quizzes needing manual grading.
$content = "<table class='mot_table'>";
$content .= "<th>" . get_string( 'tpmgthead','local_tpmg' ) . "</th>";
foreach( $pmQuizzesArr as $key=>$currPmQuiz )
{
$tpmgQuizHref = $CFG->wwwroot . '/mod/quiz/report.php?id=' . $currPmQuiz->cmid . '&mode=grading';
$content .= "<tr>";
$content .= "<td> <a href=" . $tpmgQuizHref . ">" . $currPmQuiz->quizname . "</a></td>";
$content .= "</tr>";
}
$content .= "</table>";
echo $content;
}
else
{
echo get_string( 'tpmgnopm','local_tpmg' );
}
}
else
{
require_login();
}
echo $OUTPUT->footer();
编辑:
我发现页面正文,可能还有页眉,都被打印了两次。请指导。
您必须在调用 $OUTPUT->header() 之前设置页面参数 ( $PAGE->set_* );
在本地插件的页面中,$OUTPUT->header(); 出现错误:
检测到编码错误,必须由程序员修复:传递给 moodle_page::set_state 的状态无效。我们处于状态 1,请求状态 1。
我已经检查过 google 原因可能是对 $OUTPUT->header();
的第二次调用但是没有第二个电话
另外,令人疑惑和惊讶的是,其他页面都没有报错,包括,类似其他本地插件,只有这个本地插件页面有报错。
此外,我尝试了 $OUTPUT->has_started() ,它 returns false.
另外,$PAGE->state 是 0 ,就在调用 header 之前。
Moodle 版本 2.8
请多多指教
编辑:
require_once('../../config.php');
require_login();
global $CFG,$PAGE;
$PAGE->set_context(context_system::instance());
$PAGE->set_pagelayout('standard');
$PAGE->set_title('');
$PAGE->set_heading('');
$PAGE->set_url($CFG->wwwroot.'/local/tpmg/pending-manual.php');
if( ! $OUTPUT->has_started() )
{
// echo $PAGE->state;exit;
echo $OUTPUT->header();
}
if( isloggedin() )
{
require_once('lib.php');
$pmQuizzesObj = get_pm_quizzes();
if( $pmQuizzesObj->pendingAttsCount )
{
$pmQuizzesArr = $pmQuizzesObj->quizzesArr;
echo get_string( 'tpmgpano','local_tpmg' ) . " : " . $pmQuizzesObj->pendingAttsCount . "<br/>";
// Here goes table for Quizzes needing manual grading.
$content = "<table class='mot_table'>";
$content .= "<th>" . get_string( 'tpmgthead','local_tpmg' ) . "</th>";
foreach( $pmQuizzesArr as $key=>$currPmQuiz )
{
$tpmgQuizHref = $CFG->wwwroot . '/mod/quiz/report.php?id=' . $currPmQuiz->cmid . '&mode=grading';
$content .= "<tr>";
$content .= "<td> <a href=" . $tpmgQuizHref . ">" . $currPmQuiz->quizname . "</a></td>";
$content .= "</tr>";
}
$content .= "</table>";
echo $content;
}
else
{
echo get_string( 'tpmgnopm','local_tpmg' );
}
}
else
{
require_login();
}
echo $OUTPUT->footer();
编辑: 我发现页面正文,可能还有页眉,都被打印了两次。请指导。
您必须在调用 $OUTPUT->header() 之前设置页面参数 ( $PAGE->set_* );