Moodle 搜索输入组件(Search Input)完整指南:三种模板的用法、变量与源码解析
教育后端前端【免费下载链接】moodleMoodle - the worlds open source learning platform项目地址https://gitcode.com/gh_mirrors/mo/moodle点击查看免费下载本指南围绕 Moodle 核心组件库中的 search-input 组件文档系统讲解 Moodle 中搜索输入框的三种标准形态默认搜索表单、自动搜索输入带清除按钮与导航栏搜索表单。读完本文你将掌握每个模板的全部上下文变量、适用的 UI 场景选择标准并能从 Mustache 模板源码 与 渲染器实现 层面理解其底层工作原理从而在插件或自定义主题中正确地复刻与扩展这些搜索组件。组件概述Moodle 如何统一搜索交互Moodle 的搜索输入组件core/search_input、core/search_input_auto、core/search_input_navbar于 Moodle 3.10 引入对应 MDL-69454定位为组件库Component library中的标准 UI 构件覆盖在数据集合中查找条目这一通用需求。从 search-input.md 的说明看搜索输入组件有两大行为模式立即反馈式用户输入后立刻借助 JS更新输入框下方展示的数据例如用户列表、设置项表格的即时过滤提交反馈式用户将搜索内容 POST/GET 提交给 Moodle 后由服务端返回结果页。这些搜索框被广泛用于页面导航栏navbar、区块blocks、模块页面、设置页面以及内容库contentbank等位置。Moodle 将其收敛为核心模板正是为了让全站各处的搜索交互保持一致的外观、可访问性与交互细节。默认搜索输入core/search_input最小示例组件库文档给出了默认搜索输入的完整 Mustache 渲染上下文JSON{ action: https://moodle.local/admin/search.php, extraclasses: my-2, inputname: search, inform: false, searchstring: Search something, hiddenfields: [ { name: context, value: 11 } ] }该 JSON 直接对应 search_input.mustache 模板的Example context (json)块。渲染后生成一个simplesearchform包裹的 GET 表单输入框form-control、隐藏字段hiddenfields与提交按钮默认使用btn-submit样式并内嵌a/search图标。模板中{{^inform}}与{{#inform}}的逻辑分支决定了是否输出form标签——当inform为 true 时搜索框作为大表单的一部分嵌入不再自建表单。强调样式搜索输入.btn-primary当搜索是页面上的默认操作且是全页唯一搜索框时导航栏搜索除外文档建议使用强调样式{ action: https://moodle.local/admin/search.php, extraclasses: my-2, uniqid: Unique string, inputname: search, inform: false, btnclass: btn-primary, searchstring: Search something, hiddenfields: [ { name: context, value: 11 } ] }关键在于btnclass变量。对照 search_input.mustache 第 68 行源码button typesubmit classbtn {{^btnclass}}btn-submit{{/btnclass}} {{ btnclass }} search-icon可以确认未提供btnclass时回退到btn-submit默认搜索按钮视觉提供btn-primary时按钮即变为高强调样式。文档给出的选型原则是搜索不是页面主操作 → 使用默认搜索输入btn-submit搜索是页面默认动作、且页面内唯一的搜索框 → 使用强调样式btn-primary。全部上下文变量文档列出的默认搜索模板变量如下结合模板源码可补充细节变量作用源码中对应位置action指定表单get提交的 action 地址模板第 48 行form ... action{{ action }}extraclasses附加到搜索外层 wrapper 的 CSS 类第 46 行simplesearchform {{ extraclasses }}uniqid唯一字符串用于生成输入框 idsearchinput-{{uniqid}}避免重复页面中的 id 冲突第 55 行inputname搜索输入框的表单字段名第 59 行name{{ inputname }}inform是否作为更大表单的一部分true 时不输出form标签第 47-49、79-81 行{{^inform}}/{{#inform}}query用户当前输入的搜索值用于回填输入框第 62 行value{{ query }}btnclass按钮设计使用的 btn 类btn-secondary、btn-primary等第 68 行searchstring描述当前搜索的字符串同时用作 placeholder 与 aria-label第 57、58、65、72 行hiddenfields附加隐藏表单字段的 name/value 键值对数组第 50-52 行buttonattributes模板扩展支持附加到提交按钮上的自定义属性键值对第 69 行注意searchstring在模板中同时填充placeholder、aria-label与辅助技术可见的visually-hidden文本因此它既承担视觉提示也承担无障碍语义是组件库强调搜索提示即无障碍标签的体现。自动搜索输入core/search_input_auto当输入应立即触发下方数据如用户名表格、设置项列表更新时使用自动搜索模板{ placeholder: Search settings, uniqid: 45 }对应 search_input_auto.mustache其核心特征输入框带data-regioninput与data-actionsearch标记第 47 行供 JS 监听输入事件附带一个默认隐藏的清除按钮btn-clear d-nonedata-actionclearsearch用户开始输入后出现点击即清空输入框输入框样式为form-control withclear roundedplaceholder 缺省时回退到search语言字符串模板支持$placeholder、$value、$label、$additionalattributes等 Mustache 块覆盖点方便子模板定制。文档给出的变量仅两个uniqid唯一字符串与placeholder搜索占位文本。其清除交互的底层由 JS 驱动在 search_combobox.js 的选择器定义中[data-actionsearch]与[data-actionclearsearch]正是自动搜索输入框与清除按钮的标准钩子JS 侧通过防抖debounce取自core/utils将输入转换为对下方数据源的即时查询并在输入为空或点击清除时复位结果。导航栏搜索表单core/search_input_navbar导航栏搜索用于触发全站级搜索每页只出现一次且必须尽量少占用空间以免移动端布局被破坏{ action: https://moodle.local/admin/search.php, inputname: search, searchstring: Search, hiddenfields: [ { name: cmid, value: 11 } ] }对照 search_input_navbar.mustache其交互特征与实现要点如下点击搜索按钮开始输入页面初始只显示一个搜索图标a/search通过data-bs-togglecollapse展开#searchform-navbar折叠区域点击关闭按钮隐藏搜索表单内的btn-close按钮绑定data-actionclosesearch收起时清空输入值并恢复搜索图标模板内置的 JS 块监听hidden.bs.collapse/show.bs.collapse/shown.bs.collapse事件并在展开后自动聚焦输入框回车提交表单表单 method 为 get、action 指向搜索地址且内置 JS 会在输入为空时拦截提交submit.addEventListener(click, ...)占用空间极小未展开时仅一个图标符合移动端要求移动端覆盖导航栏折叠面板在窄屏上会叠在导航栏之上展示。该模板在真实页面中的调用点可从 core_renderer.php 的search_box()方法看到当全局搜索启用$CFG-enableglobalsearch且当前用户具备moodle/search:query能力时方法构造action指向/search/index.php、hiddenfields携带当前页面 context id、inputnameq、searchstring与grouplabelsitewidesearch语言串等数据最终调用render_from_template(core/search_input_navbar, $data)渲染。这验证了文档所述导航栏搜索触发全站搜索的事实。此外仓库中还提供了core/search_input_navbar_inlinesearch_input_navbar_inline.mustache这一桌面端内联变体始终可见、不使用折叠与切换适合桌面端导航栏直接展示搜索框的布局场景。选型速查与实战建议综合文档与源码三四种模板的适用场景可归纳如下模板触发方式适用场景关键差异core/search_input表单提交GET普通页面搜索非主操作或作为大表单的一部分inform: true可配btnclass强调支持query回填core/search_input强调样式表单提交页面默认动作且全页唯一搜索框btnclass: btn-primarycore/search_input_autoJS 即时过滤输入即时更新下方数据表格、设置列表内置清除按钮需配合data-action钩子与 JS 监听core/search_input_navbar折叠展开 表单提交每页一次的全局搜索入口空间极小、移动端覆盖导航栏、自带折叠与聚焦逻辑core/search_input_navbar_inline常驻可见 表单提交桌面端导航栏直接展示无折叠始终可见在插件开发中使用这些组件时推荐直接在 PHP 侧构造与文档示例一致的 context 数组并调用$OUTPUT-render_from_template(core/search_input_auto, $data)或复用core_renderer::search_box()的思路传递action/hiddenfields/inputname。若需自定义自动搜索的过滤逻辑可在页面上引入core/comboboxsearch/search_combobox模块源码见 search_combobox.js它已经内置了对[data-actionsearch]输入框、[data-actionclearsearch]清除按钮、下拉结果区与查看全部链接的标准事件绑定是扩展自动搜索交互的现成基础。最后提醒由于这些模板属于核心组件库组件文档位于 public/admin/tool/componentlibrary主题与插件作者应优先复用核心模板而非自行重写搜索框这样既能保证全站一致的视觉与无障碍标准也能在核心组件升级如导航栏搜索交互调整时自动获得改进。赞分享教育后端前端【免费下载链接】moodleMoodle - the worlds open source learning platform项目地址https://gitcode.com/gh_mirrors/mo/moodle点击查看免费下载相关推荐Moodle Toggle Input开关输入组件开发指南core/toggle 模板的参数、块复用与真实用例Moodle Toggle Input开关输入组件开发指南core/toggle 模板的参数、块复用与真实用例 Moodle 4.0 起引入的 core/教育后端前端formily/element Password 密码输入框组件三种 Schema 用法与源码实现解析formily/element Password 密码输入框组件三种 Schema 用法与源码实现解析 本文围绕 Formily 生态中 Element 版前端UI组件Formily Next 组件详解Input 文本输入框的三种 Schema 接入方式与源码原理Formily Next 组件详解Input 文本输入框的三种 Schema 接入方式与源码原理 本指南以 Formily 的 Next 适配层 form前端UI组件上一篇30分钟生成可引导EFIOpCore-Simplify 黑苹果自动配置教程下一篇如何快速修复损坏的视频文件Untrunc完整使用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Umi-OCR离线OCR指南:从截图识别到扫描转可搜索PDF

Umi-OCR离线OCR指南:从截图识别到扫描转可搜索PDF

Umi-OCR离线OCR指南:从截图识别到扫描转可搜索PDF 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。…

2026/10/7 9:52:36 阅读更多 →
【爱她就为她买龙虾】Open Claw 搭建使用全图文流程:从零到跑通的 TaoToken 配置实录

【爱她就为她买龙虾】Open Claw 搭建使用全图文流程:从零到跑通的 TaoToken 配置实录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:52:36 阅读更多 →
从“宝盖”到“张晓敏”:汤梦佳的“剧抛脸”是如何炼成的

从“宝盖”到“张晓敏”:汤梦佳的“剧抛脸”是如何炼成的

在流量与话题主导的影视市场中,总有一些演员以扎实的表演功底悄然完成对角色的“隐身式”塑造。她们不依赖固定的形象标签,而是以每一次近乎“换脸”的表演,让观众记住角色、忘记演员本人。汤梦佳,正是这样一位被观众和行业逐渐看…

2026/10/7 9:51:36 阅读更多 →

最新新闻

鸡蛋掉落:从朴素DP到最优解的动态规划进阶指南

鸡蛋掉落:从朴素DP到最优解的动态规划进阶指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 11:06:55 阅读更多 →
InnoDB Undo Log解析:从MVCC原理到回滚日志故障排查

InnoDB Undo Log解析:从MVCC原理到回滚日志故障排查

打开 SHOW ENGINE INNODB STATUS ,看到History list length指数级飙升时,我第一反应不是查慢查询,而是去 information_schema.innodb_trx 里找那个跑了几十分钟还不提交的事务。搞InnoDB这些年,我最深的体会就是:R…

2026/10/7 11:06:55 阅读更多 →
Agent-Reach:轻量级智能体通信协议实战指南

Agent-Reach:轻量级智能体通信协议实战指南

1. 项目概述:一个轻量级、可扩展的智能体通信协议框架 Agent-Reach 不是一个玩具 Demo,也不是某个大厂闭源内部工具的代号,而是一个在 GitHub 上真实存在、持续演进、被多个开源项目间接引用的 CLI 工具与 API 协议规范。我第一次注意到它&am…

2026/10/7 11:06:55 阅读更多 →
伴随灵敏度分析:一次正演一次伴随求解高维放疗优化梯度

伴随灵敏度分析:一次正演一次伴随求解高维放疗优化梯度

上周我把一套肿瘤生长模型的伴随灵敏度分析跑通,顺手拿它做了个时空放射治疗剂量优化的演示,结果好几个朋友看完第一反应都一样:既然要算梯度,直接对每个参数做扰动不就行了吗?这个问题我也想过,直到算了一…

2026/10/7 11:06:55 阅读更多 →
IC617中CDB转OA数据库:从转换命令到验证避坑全攻略

IC617中CDB转OA数据库:从转换命令到验证避坑全攻略

简介:面向 Cadence IC617 平台的 CDB 转 OA 数据迁移指南,专门解决旧版工艺库无法在 Virtuoso 中直接打开的兼容性问题。这份 PDF 以图文结合形式,清晰讲解了使用 cdb2oa 工具将 CDB 格式数据转换为 OpenAccess 格式的完整流程:包…

2026/10/7 11:06:55 阅读更多 →
agent-skills实战:用技能体系解决AI编码代理工程落地难题

agent-skills实战:用技能体系解决AI编码代理工程落地难题

1. 从"agent-skills"说起:为什么AI编码代理需要一套技能体系第一次看到agent-skills这个项目名的时候,我脑子里冒出来的第一个念头是:这不就是把散落在各个仓库里的提示词、脚本、工作流模板,统一收拢成一套可复用的&qu…

2026/10/7 11:05:53 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 8:21:32 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 4:21:51 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:18:13 阅读更多 →