Обработка данных MOODLE: функция get_records_sql не работает. форма моего плагина не отображается при добавлении get_records_sql в код?

Я пытаюсь сделать плагин на Moodle. я работаю над moodle 3.0, я уже создал форму moodle для своего плагина, я хочу показать список викторин в форме, используя элемент выбора moodle, форма отображается, когда я показываю ее только без опции выбора. когда я пытаюсь добавить параметр в элемент select, используйте код из API обработки данных Moodle, моя форма не отображается.

это мой код.

public function definition() {
        global $CFG;

        $courses = get_courses('id, fullname, category');
        $arrcourses= array();
        $arrcourses[0] = get_string('choose');
        foreach($courses as $c) {
            if ($c->category !=0){
            $arrcourses[$c->id]=$c->fullname;
            }
        }           
        $view_form = $this->_form; // Don't forget the underscore! 
        $view_form->addElement('select', 'quiz_select', get_string('select_label', 'local_eg'), $arrcourses); // Add elements to your form
        $view_form->setType('quiz', PARAM_INT);    
         $view_form->setType('quiz_select', PARAM_INT);

когда я использую это, моя форма выглядит так. выберите элемент со списком, конечно

но этот элемент выбора заполняется списком курсов, потому что я использую функцию get_course... затем, когда я пытаюсь использовать функцию get_record_sql, как код ниже

class view_form extends moodleform {
    //Add elements to form
    public function definition() {
        global $CFG;

        $courses = get_courses('id, fullname, category');
        $arrcourses= array();
        $arrcourses[0] = get_string('choose');
        foreach($courses as $c) {
            if ($c->category !=0){
            $arrcourses[$c->id]=$c->fullname;
            }
        }
        ////////////////////////////////////////////////////////////////
        // THIS IS THE NEW LINE THAT I ADD TO FILL THE SELECT ELEMENT//
        ///////////////////////////////////////////////////////////////
        $courselist=array();        
        $table= "quiz";
        $result = $DB->get_records_list($table, 'course', array( '2'));

        $view_form = $this->_form; // Don't forget the underscore! 
        $view_form->addElement('select', 'quiz_select', get_string('select_label', 'local_eg'), $arrcourses); // Add elements to your form
        $view_form->setType('quiz', PARAM_INT);    
         $view_form->setType('quiz_select', PARAM_INT);       

Я добавляю только 3 новые строки, после того, как я сохраняю и запускаю их, моя форма исчезает... кто-нибудь может мне помочь, как это исправить???


person Ida Bagus Komang Winduyasa    schedule 20.01.2016    source источник
comment
хорошо, давайте работать через это. ваш код выходит за пределы $result = ... ?   -  person Pooya    schedule 20.01.2016


Ответы (1)


Во-первых, включите отладку (https://docs.moodle.org/en/Debugging) - это бы сразу сказало, в чем проблема.

Во-вторых, вы не можете использовать глобальные переменные любого типа, не объявив их в своей функции. Вам нужно добавить 'global $DB;' до того, как вы впервые используете $DB в своей функции. В этом случае лучше всего добавить его в существующую глобальную строку, указав «global $CFG, $DB;».

person davosmith    schedule 20.01.2016