Filepicker的验证在Moodle中不起作用

时间:2015-08-07 07:44:08

标签: validation moodle filepicker

Moodle Validation中的

filepicker无效。我的表单是 add_form.php

require_once("{$CFG->libdir}/formslib.php");

class add_form extends moodleform {

    function definition() {
        global $DB;
        $mform =&$this->_form;
        // add question title.
        $mform->addElement('header','displayinfo', 'Add/Edit Question');
        $mform->addElement('editor', 'question', 'Question');
        $mform->addRule('question', null, 'required', null, 'client');
        $mform->setType('question', PARAM_RAW);
        $maxbytes = 0;
        $mform->addElement('filepicker', 'answerfile', get_string('file'), null,
                   array('maxbytes' => $maxbytes, 'accepted_types' => array('document','.txt', '.pdf')));
        $mform->addRule('answerfile', null, 'required', null, 'client');
        $mform->setType('answerfile', PARAM_RAW);


        $mform->addElement('hidden', 'blockid');
        $mform->setType('blockid', PARAM_RAW);
        $mform->addElement('hidden', 'courseid');
        $mform->setType('courseid', PARAM_RAW);
        $this->add_action_buttons(false, 'SAVE');

    }
}

此处第一个字段required validationquestion)正常运行。但validation的{​​{1}}(必填)无效。我正在使用两个字段answerfile

当我在one editor and one filepicker fields.中提交空值(没有选择文件)的按钮时,表单会被提交。

filepicker

请帮帮我......

Moodle ver:2.9.1

2 个答案:

答案 0 :(得分:0)

可能是客户端验证不起作用。尝试服务器端验证。如果可以,那么它可能与客户端的javascript有关。

$mform->addRule('answerfile', null, 'required');

答案 1 :(得分:0)

文件验证规则仅在我们在moodleform custructor中传递第一个参数时才有效。 使用function is_dir_empty($dir) { foreach (new DirectoryIterator($dir) as $fileInfo) { if($fileInfo->isDot()) continue; return false; } return true; } $mform = new add_form($pageurl);放置您已实例化add_form对象的位置。 $ pageurl是提交表单数据的页面的URL。

我检查了您的代码,如果使用参数,它适用于客户端和服务器端验证。