如何在moodle中创建自定义表单?

时间:2014-07-07 18:31:30

标签: moodle

我想在moodle中创建自定义表单并将表单数据存储在数据库表中。 我一直在研究moodle表单库,但对我来说它太复杂了。

有关如何在moodle中创建自定义表单以及将表单数据存储在数据库中的任何帮助或指导或教程或参考指南或电子书将非常感激。

3 个答案:

答案 0 :(得分:5)

最好使用Form API。这会处理输入验证,预填表格等。

有关详细信息,请参阅: https://docs.moodle.org/dev/Form_API

亮点 经过测试和优化,适用于主要的屏幕阅读器Dragon和JAWS。 无表格布局。 使用required_pa​​ram,optional_param和会话密钥安全地处理表单数据。 支持客户端验证 将Moodle帮助按钮添加到表单的工具。 使用File_API支持文件存储库 支持许多自定义moodle特定和非特定表单元素。 添加重复元素。 在预先组中添加表单元素 用法 要在moodle中创建表单,您必须创建类扩展moodleform类并覆盖表单元素的覆盖定义。

//moodleform is defined in formslib.php
require_once("$CFG->libdir/formslib.php");

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

        $mform = $this->_form; // Don't forget the underscore! 

        $mform->addElement('text', 'email', get_string('email')); // Add elements to your form
        $mform->setType('email', PARAM_NOTAGS);                   //Set type of element
        $mform->setDefault('email', 'Please enter email');        //Default value
            ...
    }
    //Custom validation should be added here
    function validation($data, $files) {
        return array();
    }
}

然后在您的页面上实例化表单(在本例中为simplehtml_form)。

//include simplehtml_form.php
require_once('PATH_TO/simplehtml_form.php');

//Instantiate simplehtml_form 
$mform = new simplehtml_form();

//Form processing and displaying is done here
if ($mform->is_cancelled()) {
    //Handle form cancel operation, if cancel button is present on form
} else if ($fromform = $mform->get_data()) {
  //In this case you process validated data. $mform->get_data() returns data posted in form.
} else {
  // this branch is executed if the form is submitted but the data doesn't validate and the form should be redisplayed
  // or on the first display of the form.

  //Set default data (if any)
  $mform->set_data($toform);
  //displays the form
  $mform->display();
}

答案 1 :(得分:4)

你有几种方法可以做到这一点。清洁工使用Form API(http://docs.moodle.org/dev/Form_API)。

顺便说一句,您可以使用页面API(http://docs.moodle.org/dev/Page_API)在本地插件中使用PHP轻松创建自己的表单。

这是一个简单的例子:

<?php

require_once('../../config.php');
global $CFG, $PAGE;

$PAGE->set_context(context_system::instance());
$PAGE->set_pagelayout('standard');
$PAGE->set_title('Form name');
$PAGE->set_heading('Form name');
$PAGE->set_url($CFG->wwwroot.'/local/yourform/index.php');
echo $OUTPUT->header();

?>

<form method="post" action="post.php">
    ... Your form code goes here
</form>

<?php

... Your PHP data handling code

echo $OUTPUT->footer();

?>

将此代码放入Moodle root的“local”目录下的新目录中。示例:

/moodle/local/yourform/index.php

然后,通过在Moodle根URL末尾添加local/yourform/index.php来访问您的表单。

答案 2 :(得分:0)

有一个用于为Moodle创建表单的插件,可让您轻松创建用于注册,反馈,调查和联系的表单。我们可以根据自己的需要进行定制。我们可以使用简码将表单嵌入Moodle的任何位置。

https://edwiser.org/forms/