Odoo - 自定义模板菜单加载
Odoo - Custom template menu load
目前我正在开发 odoo 模块,它需要有自己的(定制和设计的)仪表板。因此,只有当用户登录到后端(他能够管理应用程序、设置和类似的东西)时,这个仪表板才会可见。
似乎唯一可行的方法是创建一个单独的控制器,渲染为该 controller/dashboard 实现的特定模板,并将其与菜单按钮绑定。
一切都很好,但是当我们渲染模板时,它是空白的。我想为此模板加载标准后端菜单 - 并且只是在模板主体上工作。
有没有我可以继承的视图,或者我可以使用的任何方式,我可以在其中创建一个模板,该模板会自动为该模板加载顶部菜单栏?
我试图继承“web.webclient_bootstrap”模板,并在该模板的主要 div 中追加内容,但它不起作用。好像在继承这个模板的时候,session_info是空的?
在研究了 odoo 源代码之后 - 与更多参与 odoo 开发的人进行了讨论 - 总的来说 - 更多地使用 odoo - 我找到了如何做到这一点的方法。
最初的问题有一个错误的假设——这可以通过使用控制器进行渲染来实现。重要的是要理解 - odoo 后端呈现为 "single js page",并且仪表板端的任何类型的自定义(odoo 默认不提供,您可以在视图中定义) - 需要由完成使用 javascript.
直接创建 js 小部件和更改 dom 对象
下面的解决方案表示仪表板侧的 action/page - 这将呈现空白页面,上面只有 "Test" 个字。
odoo.define("mymodule.customdashboard", function (require) {
"use strict";
var core = require("web.core");
var AbstractAction = require("web.AbstractAction");
var Widget = require("web.Widget");
var qweb = core.qweb;
var _t = core._t;
require("web.dom_ready");
var CustomDashboard = AbstractAction.extend({
template: "custom_dashboard",
events: {
},
init: function(parent, action){
this._super.apply(this, arguments);
var options = action.params || {};
this.params = options;
},
start: function(){
this.$(".dashboard-wrapper").append(qweb.render("campaign_dashboard_campaign_list", {"someArgData": "Test"}));
}
});
core.action_registry.add("custom.dashboard", CustomDashboard);
return {
CustomDashboard: CustomDashboard
}
});
其中 campaign_dashboard_campaign_list 是将要调用并带有参数的模板的名称,与所有 html 数据一起插入到 dom 包含 class .dashboard-wrapper 的元素(存在于另一个名为 custom_dashboard 的模板中,定义于class.
的顶部
目前我正在开发 odoo 模块,它需要有自己的(定制和设计的)仪表板。因此,只有当用户登录到后端(他能够管理应用程序、设置和类似的东西)时,这个仪表板才会可见。
似乎唯一可行的方法是创建一个单独的控制器,渲染为该 controller/dashboard 实现的特定模板,并将其与菜单按钮绑定。
一切都很好,但是当我们渲染模板时,它是空白的。我想为此模板加载标准后端菜单 - 并且只是在模板主体上工作。
有没有我可以继承的视图,或者我可以使用的任何方式,我可以在其中创建一个模板,该模板会自动为该模板加载顶部菜单栏?
我试图继承“web.webclient_bootstrap”模板,并在该模板的主要 div 中追加内容,但它不起作用。好像在继承这个模板的时候,session_info是空的?
在研究了 odoo 源代码之后 - 与更多参与 odoo 开发的人进行了讨论 - 总的来说 - 更多地使用 odoo - 我找到了如何做到这一点的方法。
最初的问题有一个错误的假设——这可以通过使用控制器进行渲染来实现。重要的是要理解 - odoo 后端呈现为 "single js page",并且仪表板端的任何类型的自定义(odoo 默认不提供,您可以在视图中定义) - 需要由完成使用 javascript.
直接创建 js 小部件和更改 dom 对象下面的解决方案表示仪表板侧的 action/page - 这将呈现空白页面,上面只有 "Test" 个字。
odoo.define("mymodule.customdashboard", function (require) {
"use strict";
var core = require("web.core");
var AbstractAction = require("web.AbstractAction");
var Widget = require("web.Widget");
var qweb = core.qweb;
var _t = core._t;
require("web.dom_ready");
var CustomDashboard = AbstractAction.extend({
template: "custom_dashboard",
events: {
},
init: function(parent, action){
this._super.apply(this, arguments);
var options = action.params || {};
this.params = options;
},
start: function(){
this.$(".dashboard-wrapper").append(qweb.render("campaign_dashboard_campaign_list", {"someArgData": "Test"}));
}
});
core.action_registry.add("custom.dashboard", CustomDashboard);
return {
CustomDashboard: CustomDashboard
}
});
其中 campaign_dashboard_campaign_list 是将要调用并带有参数的模板的名称,与所有 html 数据一起插入到 dom 包含 class .dashboard-wrapper 的元素(存在于另一个名为 custom_dashboard 的模板中,定义于class.
的顶部