在 Odoo 13 Enterprise SaaS 中不使用 Python 控制器将产品列表导入自定义 JavaScript 模块

问题描述

首先,我使用的是由 odoo (SaaS) 托管的 odoo 13 Enterprise。

我想为我们的电子商务商店创建一个定制的产品页面。我想使用 JQuery 来控制页面元素。由于我使用 odoo 的 SaaS 版本,我无法选择在我的自定义模块中包含 Python 代码,因此我无法创建自定义 Python 控制器来将数据库值传递给我的 JavaScript 模块。

我希望能够在我的 JavaScript 模块中访问特定的产品信息,这与 odoo 使用“product.template”模型设置的非常相似。

我在文档中找到了 RPC 部分,它非常适合获取我需要的值,除非用户登录。显然,您必须登录才能对数据库进行 RPC 调用。当我尝试以“匿名”用户身份使用 RPC 调用时,出现会话错误。查了一下,发现是没有登录造成的,很明显我需要把这个自定义的产品页面展示给没有登录我网站的用户

我需要的只是一个数组或对象中所有产品值的初始信息转储,然后我可以使用 JavaScript 根据需要过滤信息。

我尝试过的事情:

我尝试在 QWeb 中使用 Python 来检索值,如下所示:

<t t-set="products" t-value="request.env['product.template'].search([('is_published','=',true)])"/>

它为我提供了我需要的值,但我不确定如何(如果可能的话)将“products”变量传递给我的 JavaScript 模块以便我可以使用它。

我也试过使用 RPC 如下:

var domain = [];
var fields = ['name','website_description'];
var products = this._rpc({
    model: 'product.template',method: 'search_read',args: [domain,fields]
}).then(function (res) {
    console.log(res);
})

如果用户登录,这将起作用,但是当页面被未登录用户访问时会出现会话错误

有什么方法可以在不使用 RPC 的情况下访问我需要的产品信息(名称、价格、描述等),或者以“匿名”用户身份使用 RPC 获取值而无需登录?比如,我可以从我的 JavaScript 模块内部创建一个作为指定用户的单个 RPC 调用获取数据库值并避免出现会话错误,然后将该数组/对象传递给“匿名”用户可以使用的 JavaScript 函数吗? ?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)