You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行设置Moodle课程自定义字段?查询遇阻求助

问题解答

1. 核心问题:用错了工具,不是组件名的问题

php admin/cli/cfg.php这个命令仅用于管理Moodle核心配置表(config_table)中的系统设置,完全不涉及自定义字段的查询或修改。自定义字段存储在customfield_field、customfield_category等专门的数据库表中,和cfg.php的作用范围无关,所以不管换什么组件名,都不会有输出。

2. 查看所有Moodle组件名的方法

直接查询Moodle数据库的components表即可,执行SQL语句:

SELECT name FROM components;

3. 命令行管理课程自定义字段的正确方式

查询已存在的课程自定义字段

课程自定义字段对应的组件是core_course(core_customfield是自定义字段框架的组件,而非课程字段所属组件),直接查数据库:

SELECT id, name, shortname FROM customfield_field WHERE component = 'core_course' AND area = 'course';

命令行创建/修改自定义字段

Moodle没有自带的CLI工具处理自定义字段操作,你需要编写自定义PHP脚本,调用core_customfield的API。示例逻辑:

<?php
require_once(__DIR__ . '/config.php');
require_once($CFG->libdir . '/customfield/classes/manager.php');

// 获取课程自定义字段管理器
$manager = customfield_manager::get_instance('core_course', 'course');

// 示例:创建一个必填的文本类型自定义字段
$category = $manager->get_default_category();
$field = new stdClass();
$field->categoryid = $category->id;
$field->name = '课程编号';
$field->shortname = 'coursecode';
$field->type = 'text';
$field->configdata = json_encode(['required' => 1]);

$manager->create_field($field);

将脚本放在Moodle根目录,执行php your_script.php即可。

内容的提问来源于stack exchange,提问作者J. Unkrass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:29:59