表单元素filepicker和文件管理器不显示$ mform-> addElement('filepicker'....)错误代码:noguest

时间:2016-10-05 08:53:20

标签: php moodle filepicker

我正在尝试在moodle v3中以注册形式添加上传文件输入 在fn <- function(par, obs){ if(par[2] < 0){stop("error msg")} return(sum(-dnorm(obs, mean = par[1], sd = par[2], log = TRUE))) } dat <- rnorm(100) optim(par = c(1,2), fn = fn, obs = dat, method = "BFGS") # stops due to error message optim(par = c(1,2), fn = fn, obs = dat, method = "Nelder-Mead") # works optim(par = c(1,2), fn = fn, obs = dat, method = "L-BFGS-B", lower = c(-10,0.001), upper = c(10,10)) # works

中使用$mform->addElement('filepicker' .... )

但是我收到了这个错误:
moodle/login/signup_form.php

Error code: noguest

所以我认为这意味着访客用户不允许使用filepicker
那怎么能解决这个问题呢?

2 个答案:

答案 0 :(得分:0)

如果有人需要答案,我终于找到了解决方案。

 但首先访客用户无法使用filepaicker/filemanager的原因是文件区域的草稿文件是根据用户ID存储的,访客用户不应该在系统中存储数据(否则以“访客”身份登录的不同人员可能会访问彼此的草稿文件。

解决方案是:使用$mform->addElement('file' .... )并使用 RegEx $mform->addRule()进行验证,如下所示:

$mform->addRule('document_1', 'Error (allowed extensions are .jpg, .png and .pdf)', 'filename', 'myregex'); 

答案 1 :(得分:0)

在moodle中,不允许客人和未登录的用户上传任何内容。

如果您仍希望以注册形式添加filepicker,则需要修改以下代码。

1./lib/filelib.php(编辑以下功能)

     function file_get_unused_draft_itemid() {
      if (isguestuser() or !isloggedin()) {
      //  print_error('noguest');
    }
    }

简短评论“print_error('noguest')”line。

  1. /lib/dml/moodle_database.php(编辑以下功能)

     public function get_record_select($table, $select, array   $params=null,$fields='*',$strictness=IGNORE_MISSING){
    if ($select) {
        $select = "WHERE $select";
    }
    try {
        return $this->get_record_sql("SELECT $fields FROM {" . $table . "} $select", $params, $strictness);
    } catch (dml_missing_record_exception $e) {
        if (!isloggedin()){}
        else{
        // create new exception which will contain correct table name
        throw new dml_missing_record_exception($table, $e->sql, $e->params);
        }
    }
    }
    
  2. 将上述代码编辑到相应的文件中,您将获得解决方案。