需求

在表单中显示一个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'