Moodle - 添加下拉菜单

时间:2015-08-11 07:31:01

标签: php html moodle

美好的一天。

我正在尝试在编辑问题的页面上添加新的下拉菜单。此下拉菜单用于我的本地插件。我没有设法修改页面并添加select标签。

看起来应该是这样的。 (我用'Inspect element'来实现这个目标) enter image description here

我为该问题创建了一个包含Offset(0,-1)question id的表,因为修改Moodle定义的表不是一个好习惯。

我手动创建了表,但我很快就会使用XMLDB编辑器。我还在读它,稍后会申请。

包含内容的示例表结构。

obe category

mdl_question_obe

id question obe_category 1 1 FI 2 2 FI 3 3 S 4 4 S 是问题的ID,question是问题的类别。

我认为一旦实现这一目标还有其他修改,因为在保存问题后将填充obe_category表。

我怎样才能做到这一点?任何见解都可以!

如果我错过了什么,请发表评论。

1 个答案:

答案 0 :(得分:2)

像这样的东西

/question/question.php

$mform->set_data($toform);之前添加此内容以获取当前的obe类别

if ($id) {
    $toform->obe_category = $DB->get_field('question_obe', 'obe_category', array('question' => $id));
}

然后在/question/type/edit_question_form.php

之前$mform->addElement('editor', 'questiontext', get_string('questiontext', 'question'),

添加此

$obe_options('FI' => 'FI', 'S' => 'S', 'M' => 'M');

或者如果值存储在数据库表中,则使用此方法,假设该表名为obe_category,文本字段名为obe_category

$obe_options = $DB->get_records_menu('obe_category', array(), 'obe_category', 'obe_category, obe_category');

然后

$mform->addElement('select', 'obe_category',
            get_string('selectobecategory', 'local_obe_category'), $obe_options);
$mform->setType('obe_category', PARAM_ALPHA);

然后回到/question/question.php

$question = $qtypeobj->save_question($question, $fromform);

之后

添加更新/插入

if ($question_obe = $DB->get_record('question_obe', array('question' => $question->id)) {
    $question_obe->obe_category = $fromform->obe_category;
    $DB->update_record('question_obe', $question_obe);
} else {
    $question_obe = new stdClass();
    $question_obe->question = $question->id;
    $question_obe->obe_category = $fromform->obe_category;
    $DB->insert_record('question_obe', $question_obe);
}