如何在 Odoo 18 POS 前端获取用户会话配置数据

星强吖_6001

星强吖_6001

2026-11-05

191人浏览

原创

如何在 Odoo 18 POS 前端获取用户会话配置数据

本文详解如何将自定义用户字段(如 hide_product_information)安全、高效地从 Odoo 后端传递至 POS 前端,并在 ProductScreen 等组件中实时访问,适用于 Odoo 18 的新式 POS 数据加载机制。

本文详解如何将自定义用户字段(如 `hide_product_information`)安全、高效地从 odoo 后端传递至 pos 前端,并在 productscreen 等组件中实时访问,适用于 odoo 18 的新式 pos 数据加载机制。

在 Odoo 18 中,POS 前端的数据加载已全面转向声明式架构(基于 _load_pos_data_fields 和 pos.session/res.users 等模型的协同加载),不再推荐直接重写 _load_pos_data() 方法注入会话级动态字段——尤其当该字段实际归属用户维度时,强行挂载到 pos.session 不仅逻辑错位,还可能导致缓存不一致或权限校验失效。

✅ 正确做法:将字段绑定到 res.users 模型,并通过标准 POS 数据加载管道透出。

首先,扩展用户模型并显式声明该字段需同步至 POS:

# models/res_users.py
from odoo import models, fields, api

class ResUsers(models.Model):
    _inherit = 'res.users'

    hide_product_information = fields.Boolean(
        string="Hide Product Information in POS",
        help="If enabled, product details (e.g., description, barcode) will be hidden on the POS product screen."
    )

    @api.model
    def _load_pos_data_fields(self, config_id):
        # 必须调用父类方法以保留默认字段(如 id, name, groups_id 等)
        res = super()._load_pos_data_fields(config_id)
        # 显式添加自定义字段,确保其被包含在 POS 加载的 user 数据中
        res += ['hide_product_information']
        return res

⚠️ 注意事项:

精英前端设计-专业版
精英前端设计-专业版

企业级前端设计系统,支持多页面应用、React/Vue组件、品牌一致性与高级动效编排。

下载
  • config_id 参数代表当前加载的 POS 配置(pos.config),可用于实现配置级条件过滤(例如仅对启用某功能的门店加载该字段);
  • 字段必须为 store=True(默认满足),且具备读取权限(确保对应用户组有 res.users 的 read 权限);
  • 修改后务必重启服务并更新模块(-u your_module),否则前端无法识别新增字段。

前端使用时,无需 patch PosSession 或手动解析 session 数据。Odoo 18 的 this.pos 对象已自动预加载当前登录用户的完整信息(含扩展字段),可通过以下方式安全访问:

// static/src/js/screens/product_screen.js
import { patch } from '@web/core/utils/patch';
import { ProductScreen } from '@point_of_sale/app/screens/product_screen/product_screen';

patch(ProductScreen.prototype, 'my_module.ProductScreen', {
    async onProductInfoClick(product) {
        // ✅ 正确获取方式:从当前用户对象读取
        const currentUser = this.pos.config.current_user_id;
        if (currentUser && currentUser.hide_product_information) {
            console.log('Product info is disabled for this user');
            // 例如:阻止弹窗、隐藏详情区域等
            return;
        }

        // 执行默认产品信息展示逻辑...
        await super.onProductInfoClick(...arguments);
    }
});

? 进阶提示:

  • 若需响应式监听字段变更(如管理员后台实时修改用户设置),可结合 pos.env.services.user 的 reactive 特性,或在 useEffect(若使用 Hooks)中订阅 pos 的 change 事件;
  • 多语言字段建议搭配 ir.translation 使用 translate=True,并在 JS 中通过 this.env._t() 渲染;
  • 所有透出至前端的敏感字段应严格校验业务逻辑权限,避免通过字段暴露未授权数据。

综上,Odoo 18 的 POS 数据流强调“模型职责清晰”与“加载契约明确”。将用户偏好类字段交由 res.users._load_pos_data_fields() 统一管理,既符合框架设计范式,也保障了数据一致性、可维护性与安全性。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

前端

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2843

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

6183

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

7110

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6918

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

983

5

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1871

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

5104

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1809

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

30777

23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程