0

私はmoodleでプラグインを作ろうとしています。私はmoodle 3.0で作業しています。プラグイン用のmoodleフォームをすでに作成しています。moodle select要素を使用してフォームにクイズのリストを表示したいのですが、選択オプションなしでのみ表示したときに表示されるフォームです。select 要素にオプションを追加しようとすると、moodle データ操作 API のコードを使用しますが、フォームが表示されません。

これは私のコードです。

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);

それを使用すると、フォームは次のようになります。 もちろんリストで要素を選択

しかし、そのselect要素はコースリストで満たされているため、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 つ追加するだけです。保存して実行すると、フォームが消えてしまいます。修正方法を教えてください。

4

1 に答える 1

3

最初に、デバッグ ( https://docs.moodle.org/en/Debugging )をオンにします。これにより、問題が何であるかがすぐにわかります。

次に、関数内で宣言しないと、どのような種類のグローバル変数も使用できません。「グローバル $DB;」を追加する必要があります。関数で $DB を初めて使用する前に。この場合、最善の策は、'global $CFG, $DB;' を指定して、既存のグローバル行に追加することです。

于 2016-01-20T07:38:46.070 に答える