我正在使用Moodle安装v 2.3.4,并在NEWMODULE插件中创建了一个简单的表单,并使用它输入2个字段,名称和描述。
我想插入在数据库中输入的数据,但是没有插入数据。 按下提交后,moodle会查找modedit.php,它不在当前目录中,因此会显示“找不到页面”错误。
显示代码段: make_form.php(表单页面):
<?php
require_once('../../config.php');
require_once('mod_form.php');
require_login($course, true);
echo $OUTPUT->header();
$mform = new mod_testform_mod_form();
if ($mform->is_cancelled()) {
}
else if ($fromform = $mform->get_data()) {
// print_object($fromform);
$record = new stdClass();
$record->id='';
$record->name= $fromform->name;
$record->description= $fromform->desc;
$DB=insert_record('testform_details', $record, false);
$mform->display();
}
else {
$mform->set_data($toform);
$mform->display();
print_footer($course);
}
?>
mod_form.php
<?php
defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot.'/course/moodleform_mod.php');
class mod_testform_mod_form extends moodleform_mod {
public function definition() {
$mform = $this->_form;
$mform->addElement('header', 'general', get_string('general', 'testform'));
$mform->addElement('text', 'name', get_string('name', 'testform'));
if (!empty($CFG->formatstringstriptags)) {
$mform->setType('name', PARAM_TEXT);
} else {
$mform->setType('name', PARAM_CLEAN);
}
$mform->addRule('name', null, 'required', null, 'client');
$mform->addHelpButton('name', 'name', 'testform');
// $this->add_intro_editor();
$mform->addElement('editor', 'desc', get_string('description','testform'));
$mform->setType('desc', PARAM_RAW);
$mform->addHelpButton('desc', 'description', 'testform');
$buttonarray=array();
$buttonarray[] = &$mform->createElement('submit', 'submitbutton', get_string('savechanges'));
$buttonarray[] = &$mform->createElement('reset', 'resetbutton', get_string('reset'));
$buttonarray[] = &$mform->createElement('cancel');
$mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
$mform->closeHeaderBefore('buttonar');
}
}
答案 0 :(得分:1)
根据活动插件,您的文件结构和代码不正确
http://docs.moodle.org/dev/Activity_modules
根据文件完全按照。
你得到了modedit.php的错误,因为你正在使用mooodleform_mod的clase,你不需要在你的文件夹中创建这个文件,它的核心文件会在你按照mod插件遵循正确的语法时自动打开。
如果你只想将数据存储到db中,那么使用本地插件比mod插件更容易。
感谢。