在 Moodle block
(示例block_sample
)中,通过tinymce
编辑器上传的图片未显示。
我将文本(带图片)保存在db中:
$context = context_block::instance($instanceid);
if($data = $question_form->get_data()) {
if ($draftitemid = file_get_submitted_draft_itemid('title')) {
$data->title['text'] = file_save_draft_area_files($draftitemid, $context->id 'block_sample', 'content', 0, array('subdirs' => true, 'maxfiles' => 5),$data->title['text']);
$inserRecord = new stdClass();
$inserRecord->blockid = $cid;
$inserRecord->content = $data->title['text'];
$insertRes = $DB->insert_record("sample_data", $inserRecord);
}
}
此处content
是保存问题的数据库字段名称。
数据保存在db中
id blockid content
1 2 <p>Test</p><p><img src="@@PLUGINFILE@@/flower_123.jpeg" width="200" height="200" /></p>
现在我需要显示来自db的数据(例如第一条记录):
$descDetails = $DB->get_records('sample_data', array('id'=>1));
$qn = file_rewrite_pluginfile_urls($descDetails[1]->content, "pluginfile.php", $context->id, "block_sample", 'content', $descDetails[1]->id);
$format = FORMAT_HTML;
$filteropt = new stdClass;
$filteropt->overflowdiv = true;
$qn = format_text($qn, $format, $filteropt);
echo $qn;
但是这里没有显示图像。我怎样才能解决这个问题? 我检查了元素,我得到了:
<img src="http://localhost/moodle/pluginfile.php/122/block_sample/content/1/flower_123.jpeg" width="297" height="203" alt="d" id="yui_3_17_2_2_1476699462273_239">
请帮助我..在阻止的context id
时有任何问题,或者还有其他问题。
对于moodle module(activity)
,我成功显示了相同案例的图像。这不适用于moodle block
。
这里唯一的区别是context id
和activity module
的{{1}}。
对于block
,我将activity module
视为:
context id
结论:对于活动模块,图像(通过tinymce编辑器上传)正在显示,但是moodle块图像没有显示。
我该如何解决这个问题?
修改
$context = context_module::instance($cm->id);
中的 block_sample_pluginfile
函数(参考lib.php
函数)
block_html_pluginfile