首页 > 解决方案 > 如何在moodle-3.7 中创建自定义注册插件?

问题描述

如何在 Moodle-3.7 中创建自定义注册插件?

标签: moodle

解决方案


好吧,假设我们要创建一个名为“myenrol”的新注册方法插件。

  1. 在目录中创建一个enrol名为myenrol.
  2. enrol/myenrol创建文件version.php. 此文件包含有关您的插件名称和当前版本的基本信息(Moodle 使用它来跟踪您的插件版本和运行任何升级方法的需要)。例子:
<?php

defined('MOODLE_INTERNAL') || die();

$plugin->component = 'enrol_myenrol'; // Full name of the plugin (used for diagnostics)
$plugin->release = '0.1.0';
$plugin->version = 2019072900; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018120300; // Requires this Moodle version
$plugin->maturity = MATURITY_ALPHA;

  1. enrol/myenrol创建文件lib.php. 这(通常)是任何注册方法插件中最重要的文件,因为在这里您将定义处理“注册”实例的方法,例如:您可以定义其他插件可以用来创建“myplugin 注册实例”的方法与用户和课程相关,您可以定义权限检查以允许/禁止创建/删除这些实例等。您需要编写的最小样板代码如下:
<?php

defined('MOODLE_INTERNAL') || die();

class enrol_myenrol_plugin extends enrol_plugin {


    public function use_standard_editing_ui() {
        return true;
    }

    public function edit_instance_form($instance, MoodleQuickForm $mform, $context) {
        // Do nothing by default.
    }


    public function edit_instance_validation($data, $files, $instance, $context) {
        debugging('enrol_plugin::edit_instance_validation() is missing. This plugin has no validation!', DEBUG_DEVELOPER);
        return array();
    }

    public function can_add_instance($courseid) {
        return true;
    }
}
  1. 创建文件夹langen遵循结构:enrol/myenrol/lang/en最后enrol_myenrol.phpen. 在这里,您至少需要为“pluginname”编写字符串:
<?php

defined('MOODLE_INTERNAL') || die();

$string['pluginname'] = 'My Enrolment Plugin';

请注意,这种插件最重要的部分(通常)是在 lib.php 中公开某种逻辑(公共方法),以允许其他插件或子系统在给定某些条件(即您的插件必须验证)。例如:手动注册插件允许管理员/经理通过逐一选择用户来创建注册实例,群组注册插件允许课程管理员通过选择群组(其中列出了用户)来创建注册实例等。不要忘记一个注册实例是我们在 Moodle 中用来表示用户对课程具有某种访问权限(具有特定角色,如教师、学生等)。


推荐阅读