我正在尝试在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
那怎么能解决这个问题呢?
答案 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。
/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);
}
}
}
将上述代码编辑到相应的文件中,您将获得解决方案。