gpt4 book ai didi

moodle - 理解 Moodle $context

转载 作者:行者123 更新时间:2023-12-02 01:57:25 58 4
gpt4 key购买 nike

来自Moodle doc :

A context is a space in Moodle where roles can be assigned.

据我所知,上下文是用于管理 Moodle 对象的逻辑空间。

我开发了一个带有文件上传功能的自定义 block 插件,其中使用 file_prepare_draft_areafile_save_draft_area_files 函数。有一个 $context 参数必须被通过,但我真的不知道我应该通过什么上下文?我想,这意味着我应该将 block 插件上传的文件放在哪个逻辑空间中?在我看来,最合乎逻辑的是将上传的文件存储在与我的 block 插件相关的上下文中。

我尝试使用 context_block::instance($instanceid) 但我不知道如何获取 $instanceid 参数。

  • 在这种情况下我应该使用哪种上下文?
  • 如何获取?

最佳答案

上下文的类型如下:

  • 系统
  • 类(class)类别
  • 类(class)
  • 事件模块
  • 阻止
  • 用户

上下文的层次结构是:系统=>类(class)类别=>类(class)=>事件模块

block 上下文可以出现在类(class)内或“站点”类(class)内。用户上下文位于类(class)之外。

如果您希望将文件绑定(bind)到 block 的特定实例(例如,当删除 block 时它们会自动删除,并且您可以将来自 block 的不同实例的文件分开),那么您应该使用 block 上下文(但是您必须将 block 的instanceid传递给子页面才能使用它来获取上下文:

$context = context_block::instance($blockinstanceid);

如果您希望将文件与类(class)绑定(bind) - 以便类(class)中 block 的所有实例共享相同的文件空间,并且只有在删除整个类(class)时才会删除文件,然后使用类(class)上下文(将 courseid 传递到子页面作为参数,然后使用:

$context = context_course::instance($courseid);

但是,如果您想在站点上的所有 block 之间共享该文件区域,那么系统上下文就是您想要的:

$context = context_system();

关于moodle - 理解 Moodle $context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43064153/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com