美好的一天。
我正在尝试在编辑问题的页面上添加新的下拉菜单。此下拉菜单用于我的本地插件。我没有设法修改页面并添加select标签。
看起来应该是这样的。 (我用'Inspect element'来实现这个目标)
我为该问题创建了一个包含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
表。
我怎样才能做到这一点?任何见解都可以!
如果我错过了什么,请发表评论。
答案 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);
}