跳至内容

Odoo 19 命令面板扩展:高频动作一键触达

Odoo用户手册·中文文档|命令面板 Ctrl+K:command_setup / command_provider / 命名空间 / OWL 渲染
2025年11月9日
Odoo 19 命令面板扩展:高频动作一键触达
<p>Odoo 命令面板(通常 Ctrl+K)是提升导航效率的核心 UX。Odoo 19 通过 registry API 扩展:注册全局动作、用 @/# 等前缀做命名空间搜索、按输入动态 RPC,并用 OWL 自定义结果渲染。 <p>对照:How to Customize Odoo Command Palette in Odoo 19

一、架构:两类 Registry

  • command_setup:定义命名空间(前缀、占位符、防抖)。
  • command_provider:提供 provide(env, options),用户输入时由框架调用以返回命令列表。

二、注册全局快捷动作(无前缀)

<p>例如「系统:重置本地缓存」:清空 localStorage/sessionStorage 并刷新。在 command_provider 中返回带 name、category、action 的命令对象。用户打开面板或搜索 “cache” 即可看到。
registry.category("command_provider").add("clear_cache_provider", {
  async provide(env, options) {
    return [{
      name: _t("System: Reset Local Cache"),
      category: "tools",
      action: () => {
        localStorage.clear();
        sessionStorage.clear();
        window.location.reload();
      },
    }];
  },
});

三、自定义命名空间(如 # 搜任务)

<p>先用 command_setup 注册前缀 #:名称、placeholder、debounceDelay(如 300ms,避免每键一次 RPC)。 <p>再注册带 namespace: "#" 的 provider:从 options.searchValue 取关键词,用 env.services.orm.searchReadproject.task,映射为命令;action 里 actionService.doAction 打开表单。 <p>注意 try/catch,避免 RPC 失败锁死面板。

四、自定义 OWL 结果渲染

<p>默认结果是纯文本。若要显示项目名、阶段徽章等,可返回 Component + props,用自定义 OWL 模板渲染更丰富的行。

五、资源打包

<p>在 web.assets_backend 加入相关 JS/XML,依赖 web(及 project 等业务模块)。

六、最佳实践

  • 命名空间务必 debounce
  • 结果限制 5–10 条
  • RPC 必须容错
  • 不改核心即可扩展,利于升级

七、FAQ

<p>命令面板是什么?键盘驱动的搜索/跳转/执行动作界面(Ctrl+K)。
用哪些 registry?command_setup 与 command_provider。
命名空间是什么?用前缀限定搜索范围,如 # 只搜任务。 <p>中国Odoo网原创中文改写|保留架构、全局命令、命名空间 RPC、OWL 渲染与 FAQ。Odoo用户手册 · 中文文档 · 开发实操。
Odoo 19 命令面板扩展:高频动作一键触达
2025年11月9日
存档