百度空间 | 百度首页 
 
查看文章
 
moodle架构分析---表现层的设计(一)
2009/06/06 01:31 P.M.

Moodle在表现层的实现有多种机制,分别针对页面、表单、导航条、页面头部、页面底部等。

1、针对页面的实现,直接编辑HTML页面,然后在业务逻辑处理完毕之后,include编辑好的html页面即可。这种机制的实现可以看login/index.php login/index_form.php页面。

2、针对表单的实现,一般是创建一个父类为moodleform的类,如

class test_form extends moodleform {

    //定义表单元素

function definition() {

   //获得表单引用

   $mform =& $this->_form;

  

   //添加header对象

   $mform->addElement('header', '', get_string('createuserandpass'), '');

  

   //添加text对象,

   $mform->addElement('text', 'username', get_string('username'), 'maxlength="100" size="12"');

   $mform->setType('username', PARAM_NOTAGS);

$mform->addRule('username', get_string('missingusername'), 'required', null, 'server');

}

//定义过滤

function definition_after_data(){}

//定义验证逻辑

function validation($data, $files) {}

}

然后,业务逻辑层中声明test_form对象,即

$test = new test _form();

最后调用test_form对象的display方法,即可把表单对象显示出来。

$ test ->display();

表单元素的类型和规则如下:

$GLOBALS['HTML_QUICKFORM_ELEMENT_TYPES'] =

        array(

            'group'         =>array('HTML/QuickForm/group.php','HTML_QuickForm_group'),

            'hidden'        =>array('HTML/QuickForm/hidden.php','HTML_QuickForm_hidden'),

            'reset'         =>array('HTML/QuickForm/reset.php','HTML_QuickForm_reset'),

            'checkbox'      =>array('HTML/QuickForm/checkbox.php','HTML_QuickForm_checkbox'),

            'file'          =>array('HTML/QuickForm/file.php','HTML_QuickForm_file'),

            'image'         =>array('HTML/QuickForm/image.php','HTML_QuickForm_image'),

            'password'      =>array('HTML/QuickForm/password.php','HTML_QuickForm_password'),

            'radio'         =>array('HTML/QuickForm/radio.php','HTML_QuickForm_radio'),

            'button'        =>array('HTML/QuickForm/button.php','HTML_QuickForm_button'),

            'submit'        =>array('HTML/QuickForm/submit.php','HTML_QuickForm_submit'),

            'select'       =>array('HTML/QuickForm/select.php','HTML_QuickForm_select'),

            'hiddenselect' =>array('HTML/QuickForm/hiddenselect.php','HTML_QuickForm_hiddenselect'),

            'text'          =>array('HTML/QuickForm/text.php','HTML_QuickForm_text'),

            'textarea'      =>array('HTML/QuickForm/textarea.php','HTML_QuickForm_textarea'),

            'link'          =>array('HTML/QuickForm/link.php','HTML_QuickForm_link'),

            'advcheckbox'   =>array('HTML/QuickForm/advcheckbox.php','HTML_QuickForm_advcheckbox'),

            'date'          =>array('HTML/QuickForm/date.php','HTML_QuickForm_date'),

            'static'        =>array('HTML/QuickForm/static.php','HTML_QuickForm_static'),

            'header'        =>array('HTML/QuickForm/header.php', 'HTML_QuickForm_header'),

            'html'          =>array('HTML/QuickForm/html.php', 'HTML_QuickForm_html'),

            'hierselect'    =>array('HTML/QuickForm/hierselect.php', 'HTML_QuickForm_hierselect'),

            'autocomplete' =>array('HTML/QuickForm/autocomplete.php', 'HTML_QuickForm_autocomplete'),

            'xbutton'       =>array('HTML/QuickForm/xbutton.php','HTML_QuickForm_xbutton')

        );

$GLOBALS['_HTML_QuickForm_registered_rules'] = array(

    'required'      => array('html_quickform_rule_required', 'HTML/QuickForm/Rule/Required.php'),

    'maxlength'     => array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),

    'minlength'     => array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),

    'rangelength'   => array('html_quickform_rule_range',    'HTML/QuickForm/Rule/Range.php'),

    'email'         => array('html_quickform_rule_email',    'HTML/QuickForm/Rule/Email.php'),

    'regex'         => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

    'lettersonly'   => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

    'alphanumeric' => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

    'numeric'       => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

    'nopunctuation' => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

    'nonzero'       => array('html_quickform_rule_regex',    'HTML/QuickForm/Rule/Regex.php'),

    'callback'      => array('html_quickform_rule_callback', 'HTML/QuickForm/Rule/Callback.php'),

    'compare'       => array('html_quickform_rule_compare', 'HTML/QuickForm/Rule/Compare.php')

);

具体可以查看lib/pear/HTML/QuickForm.php,和各个表单元素和规则的实现文件。


类别:moodle架构分析 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu