Odoo 用户菜单架构解析及创建和管理实战
Odoo 中的用户菜单提供了一个简洁的界面,用户可以通过一个下拉菜单轻松访问关键功能、我的设置、寻求支持以及进行入职引导等操作。
本文将深入解析Odoo 18用户菜单系统的技术架构,通过实战案例演示如何为系统管理员添加开发者模式快捷入口。要实现这一点,我们可以向 user_menuitems 注册器中添加新的项目。
注册器就像是一个有序的键值对集合,是扩展 Odoo Web 客户端的主要方式。当 JavaScript 框架需要检索字段、视图、操作或服务等的定义时,只需在注册器中查找即可。
该功能的实现涉及JavaScript框架核心机制,是理解Odoo Web客户端扩展机制的最佳切入点。
一、用户菜单系统架构解析
1、注册器的类别:
- 效果注册器:管理所有可用的视觉和行为效果。
- 格式化器注册器:包含用于格式化值的实用函数,主要用于字段。
- 解析器注册器:存放负责解释或解析值的函数。
- 主组件注册器:用于在 Web 客户端中注册高级组件。
- 服务注册器:列出系统中需要激活的服务。
- 系统托盘注册器:控制导航栏右侧显示的内容。
- 用户菜单注册器:处理位于导航栏右上角的用户菜单中显示的项目。
二、开发者模式快捷入口开发实战
1、JavaScript模块创建
/** @odoo-module **/ import { registry } from "@web/core/registry"; import { browser } from "@web/core/browser/browser"; import { _t } from "@web/core/l10n/translation"; function debugItem(env) { const urlParams = new URLSearchParams(window.location.search); urlParams.set('debug', '1'); const debugURL = window.location.pathname + '?' + urlParams.toString(); return { id: "debug", type: "item", description: _t("开发者模式"), // 多语言支持 href: debugURL, callback: () => { browser.open(debugURL, "_self"); // 页面重定向 }, sequence: 60, // 菜单项排序权重 }; } // 注册到用户菜单系统 registry.category("user_menuitems").add("debug", debugItem);
2、关键参数说明
- description:菜单项显示的文本。
- href:(可选)如果提供且有效,文本将放置在带有指定 href 链接的锚点(<a>)标签内。
- sequence:(可选)指定该菜单项相对于下拉菜单中其他项目的顺序,数值越小排序越靠前(默认100)。
- hide:(可选)指定该菜单项是否应隐藏(默认值为 false)
- callback:选择该菜单项时执行的函数,支持异步操作(需返回Promise对象)
三、模块集成与部署
1、资源文件配置(manifest.py)
{ 'name': '开发者模式扩展', 'version': '18.0.1.0', 'assets': { 'web.assets_backend': [ 'your_module/static/src/js/user_menu.js', ] } }
我的模块名称为test_module,js文件名为menuitem.js资源文件配置:
{ 'name': '开发者模式扩展', 'version': '18.0.1.0', 'assets': { 'web.assets_backend': [ 'test_module/static/src/js/menuitem.js', ] } }
当安装该模块后,“开发者模式” 选项会出现在导航栏右上角的用户菜单中。点击该选项即可启用调试模式。
用户菜单通过在界面右上角提供对重要的用户特定操作的便捷访问,简化了导航并提高了效率。