Moodle moodle_page :: set_state:状态错误无效

时间:2015-07-28 05:38:50

标签: moodle

在本地插件的页面中,我收到$ OUTPUT-> header()的错误; :

检测到编码错误,必须由程序员修复:传递给moodle_page :: set_state的无效状态。我们处于州1,州1被要求。

我已经在Google上查看原因可能是第二次调用$ OUTPUT-> header();

但是没有第二次电话。

另外,令人费解和令人惊讶的是,所有其他页面都没有错误,包括类似的其他本地插件,错误仅适用于本地插件页面。

另外,我尝试了$ OUTPUT-> has_started(),它返回false。

此外,$ PAGE->状态为0,就在调用标题之前。

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>&nbsp;<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();

编辑: 我发现页面正文,也可能是页面标题,正在打印两次。请指导一下。

1 个答案:

答案 0 :(得分:0)

您必须在调用$ OUTPUT-&gt; header()之前设置页面参数($ PAGE-&gt; set_ *);