需求
在表单中显示一个iframe,隐藏表单的控制按钮,iframe页面高度100%。
那么要如何删除表单的控制面板呢?(控制面板即“标题”、“保存”和“放弃”按钮所在的div。)
示例效果如下:
实现步骤如下:
创建css
在你的模块下创建static/css/full_form.css
文件,内容:
.o_form_view.o_form_nosheet.iframe-form{position:absolute;left:0;top:0;width:100%;height:100%;padding:0;}
该样式是为了让表单视图占满页面高度。
创建js
在你的模块下创建static/css/full_form.js
文件,内容:
odoo.define('module.full_form', function (require) {
"use strict";
var view_registry = require('web.view_registry');
var FormView = require('web.FormView');
var fullFormView = FormView.extend({
withControlPanel: false
});
view_registry.add('full_form', fullFormView);
return fullFormView;
});
该脚本是为了不显示表单控制面板。
引用css和js文件
在你的模块下创建views/style.xml
文件,内容:
<!--加载css与js资源 -->
<odoo>
<data>
<template id="assets_backend" inherit_id="web.assets_backend" name="style_view_assets_backend">
<xpath expr="." position="inside">
<link href="/my_module/static/css/full_form.css" rel="stylesheet" type="text/css"/>
<script src="/my_module/static/js/full_form.js" type="text/javascript"/>
</xpath>
</template>
</data>
</odoo>
创建模型
在你的模块下创建models/iframe_demo.py
文件,内容:
# -*- coding: utf-8 -*-
from odoo import models
class IframeDemo(models.Model):
_name = "my_module.iframe.demo"
_description = "iframe测试"
创建视图
在你的模块下创建views/iframe_demo.xml
文件,内容:
<odoo>
<data>
<record id="my_module.iframe_demo_form" model="ir.ui.view">
<field name="name">my_module.iframe.demo.form</field>
<field name="model">my_module.iframe.demo</field>
<field name="arch" type="xml">
<form js_class="full_form" class="iframe-form">
<iframe src="/my_module/static/page/estsjksh/index.html" marginheight="0" marginwidth="0" frameborder="0" width="100%"
height="100%"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="my_module.iframe_demo_action">
<field name="name">iframe示例</field>
<field name="res_model">my_module.iframe.demo</field>
<field name="view_mode">form</field>
<field name="view_id" ref="my_module.iframe_demo_form"/>
</record>
</data>
</odoo>
创建菜单
修改你的模块下的views/menu.xml
文件(或者你的菜单所在文件),添加:
<menuitem name="iframe测试"
action="my_module.iframe_demo_action"
id="my_module.menu_iframe_demo"
parent="my_module.menu_product_info" sequence="8"/>
设置权限
修改你的模块下的security/ir.model.access.csv
文件(如果不设置权限将无法显示菜单项),添加:
access_hb_base_iframe_demo,hb_base.iframe.demo,model_hb_base_iframe_demo,base.group_user,1,1,1,1
引用
修改你的模块下的__manifest__.py
文件,在data
参数中添加:
'views/iframe_demo.xml',
'views/menu.xml',
'views/style.xml'