如何使用 formslib 更改 MOODLE 中的默认编辑器值?

gzm*_*ask 1 moodle

这是 formslib Moodle 文档:

$mform->addElement('editor', 'fieldname', get_string('labeltext', 'langfile'));
Run Code Online (Sandbox Code Playgroud)

这应该是第四个属性参数:

array(
    'subdirs'=>0,
    'maxbytes'=>0,
    'maxfiles'=>0,
    'changeformat'=>0,
    'context'=>null,
    'noclean'=>0,
    'trusttext'=>0);
)
Run Code Online (Sandbox Code Playgroud)

我试过:

$mform->addElement('editor', 'fieldname', get_string('labeltext', 'langfile'), array('context'=>'test"));
Run Code Online (Sandbox Code Playgroud)

但不起作用。有任何想法吗?

小智 5

我将您的示例代码复制到论坛模块中作为 Moodle 2.0 中的测试(mod/forum/post_form.php),并设法使用以下命令让编辑器显示:

$forum_id = optional_param('forum', 0, PARAM_INT); // id of forum (from URL)

$cm = get_coursemodule_from_instance('forum', $forum_id, $course->id);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);

$mform->addElement('editor', 'fieldname', get_string('labeltext', 'langfile'), null, array('context' => $context) );
Run Code Online (Sandbox Code Playgroud)

为表单编辑器元素指定模块上下文至关重要。另外,第四个参数是保留的 - 您应该使用第五个参数来设置上下文和其他变量,尽管我相信这两个参数实际上都有效(!)

使用上面的示例代码,表单现在将具有 <textarea id="id_fieldname">。

如果您想在用户输入任何内容之前为编辑器指定默认值,您可以使用 setValue() 作为对 addElement() 结果的方法调用:

$mform->addElement
(
   'editor',
   'fieldname',
   get_string('labeltext', 'langfile'),
   null,
   array('context' => $context)
)->setValue( array('text' => 'Default text!') );
Run Code Online (Sandbox Code Playgroud)

我希望这能回答您的问题 - 但如果我可以在这里提供任何具体帮助,请发表评论。