moodle中文API之表单API

Form API

表单API

目录

1.概述

2.亮点

3.用法

4.表单元素

4.1 基本表单元素

4.2 定制表单元素

5.常用函数

5.1  add_action_buttons($cancel =true,$submitlabel =null)

5.2 setDefault()

5.3 disableif()

5.4 addRule()

5.5 setHelpButton

5.6 addHelpButton

5.7 setType()

5.8 disable_form_change_checker()

1.概述

WEB表单在Moodle中创建是使用Form API。Form API支持所有的html表单元素(checkbox/radio/textbox 等等),而且引入安全检查。

2.亮点

1. 支持拖拽

2. 较少使用表格布局.

3. 表当数据安全, 通过携带必须的参数,可选的session key.

4. 支持客户端有效性检查

5. 可以在表单元素里添加Moodle帮助按钮.

6. 支持文件库

7. 支持许多定制的moodle特定的与非特定的表单元素。

8. 可添加重复元素.

9. 按组添加表单元素

3.用法

在 moodle中创建一个表单, 你需要创建一个class 继承自 moodleform  class 而且还要重写 definition方法来包含你要创建的表单元素。

//moodleform 类定义在 formslib.php文件中
require_once("$CFG->libdir/formslib.php");
 
class simplehtml_form extends moodleform {
    //为form添加元素
    public function definition() {
        global $CFG;
        $mform = $this->_form; //别忘了下划线
        $mform->addElement('text', 'email', get_string('email')); // 添加元素到你的表单
        $mform->setType('email', PARAM_NOTAGS);                   //设置元素类型
        $mform->setDefault('email', 'Please enter email');        //设置元素默认值
            ...
    }
    //定制有效性检查可以放在这个函数里
    function validation($data, $files) {
        return array();
    }
}

然后初始化 form (这个例子是初始化 simplehtml_form)在你要添加表单的页面里。

//首先包含 simplehtml_form.php 文件
require_once('PATH_TO/simplehtml_form.php');
 
//然后实例化simplehtml_form
$mform = new simplehtml_form();
 
//Form程序处理和显示放在这里
if ($mform->is_cancelled()) {
    //处理取消表单操作(如果有取消按钮的话)
} else if ($fromform = $mform->get_data()) {
  //I这里可以进行数据有效性检查 $mform->get_data() 返回表单传递过来的数据.
} else {
  // 这个分支是表单初始化或者如果表单提交后数据不合法,那么表单就得重新显示  
  //设置默认数据 如果存在的话
  $mform->set_data($toform);
  //显示表单
  $mform->display();
}

4.表单元素

4.1 基本表单元素

1. button  普通按钮

2. checkbox  复选框

3. radio   单选框

4. select  下拉列表

5. multi-select  多选下拉列表

6. password  密码框

7. hidden  隐藏表单元素

8. html - div元素

9. static - 显示一个静态的文本.

10. text - 文本框

11. textarea  - 文本域

4.2 定制表单元素

1. advcheckbox - Advance checkbox

2. passwordunmask - 密码元素是可选将密码显示成普通文本.

3. recaptcha   - 验证码

4. selectyesno  - 是否选择框

5. selectwithlink  -  带链接的下拉选择框

6. date_selector   日期选择器

7. date_time_selector  日期时间选择器

8. duration   持续时间

9. editor   富文本编辑器

10. filepicker - 上传单个文件

11. filemanager - 上传多个文件

12. tags   - 标记

13. addGroup  - 添加到组

14. modgrade  - 模块分数

15. modvisible  - 模块可见性

16. choosecoursefile  - 选择课程文件

17. grading   - 等级

18. questioncategory  - 问题类型

5.常用函数

5.1  add_action_buttons($cancel =true,$submitlabel =null)

添加动作按钮,第一个参数是要不要添加取消按钮,第二个参数是提交按钮的文本信息是什么可用函数is get_string(‘savechanges‘). 获得,最贱的的默认如下:

$this->add_action_buttons();

 5.2  setDefault()

为单个元素设置默认值

  5.3 disableif()

在这里添加条件隐藏某些不满足显示条件的表单元素或组。

5.4 addRule()

 server/client 添加有效性检查规则像文本框类型为email的时候.

5.5 setHelpButton()

   为表单元素设置一个弹出的帮助信息

  5.6 addHelpButton()

   添加上面设置好的帮助信息。

5.7 setType()

PARAM_* 提交时会检查的特殊变量类型.

5.8 disable_form_change_checker()

默认情况下任何 Moodle 表单江会弹出"你确定提交?" 的警告框,如果你想做些改变然后尝试离开这个页面不做保存偶尔,这是不希望看到的 这种情况下你可以调用 

$mform->disable_form_change_checker().

由于时间精力有限,没有细化的查出每个函数及表单元素的使用方法,但是,相关使用方法可以点击对应文字连接到官方对应说明文档中查找。

时间: 2024-08-07 04:15:21

moodle中文API之表单API的相关文章

Django表单API详解

声明:以下的Form.表单等术语都指的的广义的Django表单. Form要么是绑定了数据的,要么是未绑定数据的. 如果是绑定的,那么它能够验证数据,并渲染表单及其数据,然后生成HTML表单.如果未绑定,则无法进行验证(因为没有数据可以验证!),但它仍然可以以HTML形式呈现空白表单. 表单类原型:class Form[source] 若要创建一个未绑定的Form实例,只需简单地实例化该类: f = ContactForm() 若要绑定数据到表单,可以将数据以字典的形式传递给Form类的构造函数

Django 表单API详解

Form要么是绑定了数据的,要么是未绑定数据的. 如果是绑定的,那么它能够验证数据,并渲染表单及其数据,然后生成HTML表单.如果未绑定,则无法进行验证,但它仍然可以以HTML形式呈现空白表单. 表单类原型:class Form[source] 若要创建一个未绑定的Form实例,只需简单地实例化该类: f = ContactForm() 若要绑定数据到表单,可以将数据以字典的形式传递给Form类的构造函数: >>> data = {'subject': 'hello', ... 'mes

SOAPUI中文教程---基于表单的身份验证

Web表单身份验证 某些Web服务需要基于表单的认证.为了能够使用API调用,您通常需要启动浏览器,在Web表单登录,然后建立会话session. Example: 这要求进行身份验证凭据的表单可能看起来像这样的形式 <form method="post" action="/login"> Username: <input type="text" name="username" required> Pa

HTTP协议与HTML表单(再谈GET与POST的区别)

HTTP的GET/POST方式有何区别?这是一个老生常谈的问题,但老生常谈的问题往往有一些让人误解的结论.本文将带您浅尝HTTP协议,在了 解HTTP协议的同时将会展示许多被人们忽视的内容.在掌握了HTTP协议的过程中我们将自然而然地了解到GET与POST的本质区别. HTTP请求 从使用者的角度看,一个HTTP请求起始于用户端浏览器上输入的一个URL地址:网页中的一个超链接:提交一个HTML表单.但本质上说,一个HTTP请求起始于用户端向HTTP服务器发送的一个URL请求. 一个标准的HTTP

Moodle 中文API之 全局输出API(一)

Output API 全局输出API (注:此API官方更新少,部分内容可能过时.) 目录 1. 组件 1.1 moodle_html_component  html组件 1.2 低级HTML 组件 1.2.1 html_label 1.2.2 html_field 1.2.3 html_button 1.2.4 action_link 1.2.5 html_img 1.2.6 html_form 1.2.7 html_list 1.2.8 html_list_item 1.2.9 html_t

Moodle 中文 API 之 数据管理API

Data API 这篇文章描述了操作数据库的相关函数,因为他们对不同的关系型数据库做了很好的封装,所以你可以更好的使用它们而不用去考虑数据库的兼容性. 目录 1. 主要信息 2. 相关函数 2.1 获取单条记录 2.2 获取hash 数组记录 2.3 获取作为 键/值对的 关联数组 2.4 查看多少记录匹配一个给定的条件 2.5 查看一条记录是否存在 2.5.1 例子 2.5.1.1  get_records() 方法 2.5.1.2  get_records_select() 方法 2.5.1

Moodle 中文API之 全局输出API(二)

目录 2. 渲染 2.1 基本渲染 2.1.1 输出标签方法 2.1.2 图片地址 2.1.3 prepare_event_handlers(&$component) 预处理方法 2.1.4 prepare_legacy_width_and_height($component) 2.2 核心渲染 2.2.1 action_icon 活动图标 2.2.2 box,box_start 和 box_end 2.2.3 button 按钮 2.2.4 checkbox 复选框 2.2.5 close_w

APache PDFbox API使用(3)----如何得到一个带表单的PDF文件的表单结构

我们知道,在PDF文件中不但可以保存图片和文字,而且我们还可以在PDF文件里面建立表单.比如,下面的图1就是一个PDF文件里面建立了一些表单. 其实PDF文件是一个有特殊结构的文件,那么,如果我们需要通过PDFBox API去往这些表单上面填值的时候,我们需要知道这些表单在PDF文件里面是如何定义的, 名称是什么. 一般的情况下,我们直接用PDFBox的API,那么有没有另外一种更为简单的方法呢? 当然有,那就是http://support.persits.com/pdf/demo_formfi

水煮 ASP.NET Web API(1-3)如何接收 HTML 表单请求

问题 我们想创建一个能够处理 HTML 表单的 ASP.NET Web API 应用程序(使用 application/x-www-form-urlencoded 方式提交数据). 解决方案 我们可以创建一个 Controller Action 接收一个 Moddel,Model 的结构和准备从HTML 表单提交的准备处理的结构相似,模型绑定依赖于 ASP.NET Web API 来处理.模型中的属性名字和 HTTP 请求中要用的名字要匹配. public HttpResponseMessage