来自Moodle doc:
上下文是Moodle中可以分配角色的空间。
我知道上下文是用于管理Moodle对象的逻辑空间。
我开发了一个带有文件上传的自定义块插件,我使用file_prepare_draft_area
和file_save_draft_area_files
个函数。必须传递$context
参数,我不知道真的知道我应该通过什么背景?
这意味着,我想,我应该在哪个逻辑空间中放置我的块插件上传的文件?
在我看来,最合乎逻辑的是将上传的文件存储在与我的块插件相关的上下文中。
我尝试使用context_block :: instance($ instanceid),但我不知道如何获取$ instanceid参数。
答案 0 :(得分:5)
上下文的类型如下:
上下文的层次结构是: 系统=>课程类别=>课程=>活动模块
阻止上下文可以出现在课程内或“网站”课程中。 用户上下文不属于课程。
如果您希望文件绑定到块的特定实例(例如,当删除块时它们会自动删除,并且您可以将块的不同实例中的文件分开),那么您应该使用块上下文(但是你必须将块的instanceid传递给子页面才能使用它来获取上下文:
$context = context_block::instance($blockinstanceid);
如果您希望文件与课程相关联 - 因此课程中所有块的实例共享相同的文件空间,并且仅在删除整个课程时删除文件,然后使用课程上下文(将courseid传递给子页面作为参数,然后使用:
$context = context_course::instance($courseid);
但是,如果要在站点上的所有块之间共享该文件区域,那么系统上下文就是您想要的:
$context = context_system();