1. 程式人生 > 其它 >如何在odoo中註冊一個頁面?

如何在odoo中註冊一個頁面?

技術標籤:odoo文件odooodoo教程javascriptwebpythoncssjquery

點選跳轉進入免費課程(課程持續更新中…)
課件文件地址:點選跳轉
課程環境地址:點選跳轉 賬密:testuser
gitee程式碼地址:點選跳轉(分支learning_odoo12)
微信公眾號二維碼:
在這裡插入圖片描述


odoo 注重敏捷,但是同時也帶來的問題我就是不夠靈活,如果有一天你的boss讓你做一個工作臺,將其他模型的資料進行統計,並使用圖表的形式進行展示。 這時候該如何做呢?

很明顯 odoo 提供的檢視時沒有辦法滿足我們的需求的,這個時候 使用qweb註冊一個頁面就很有必要了。

首先開發之前你需要了解一些知識 【Qweb語法傳送】

1 使用Qweb生成一個你想要的html介面(static/src/xml/epidemic_tongji_page.xml)

<?xml version="1.0" encoding="UTF-8"?>
<template>
	<t t-name="EpidemicTongjiPage">
	<div>這是一個測試頁面</div>
	</t>
</template>

2 對AbstractAction模組進行擴充套件,得到自己的Widget並且使用web.core對我們的Widget進行註冊,實現格式如下:(static/src/js/epidemic_tongji_page.js)

odoo.define('Epidemic_tongji.tongji_page', function(require) {
"use strict";

var AbstractAction = require('web.AbstractAction');
var core = require('web.core');

// 模組擴充套件
var TongjiPage = AbstractAction.extend({
    template: 'EpidemicTongjiPage',
    
	......
});

// 對TongjiPage進行註冊,通過對映繫結動作
core.action_registry.add('tag.tongji.page', TongjiPage); });

3 註冊完成之後,需要新增一個客戶端動作來繫結我們自己的介面實現動作的調整,其中動作的tag屬性此時需要設定為新增widget的對映值:(tag屬性非常重要,必須和對映值保持一致)(views/epidemic_tongji_page_view.xml)

<record id="epidemic_tongji_page_action" model="ir.actions.client">
	<field name="name">TongjiPagee</field>
	<field name="tag">'tag.tongji.page</field> 
</record>

4 此時我們新建一個選單專案,並且其 action屬性指定到客戶端動作來實現頁面跳轉(views/menu_views.xml):

<!-- Top menu item -->
    <menuitem name="統計頁面"
              id="epidemic_tongji_page_menu_root"
              action="epidemic_tongji_page_action"
              sequence="99"
    />

5 現在我們基本實現了自定義的介面開發,最後需要將靜態資源進行載入:
js檔案我們需要使用資產捆綁(views/templates.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
    <template id="epidemic_tongji.assets_backend" inherit_id="web.assets_backend" name="epidemic_tongji.assets_backend">
        <xpath expr="." position="inside">
            <script type="text/javascript" src="/epidemic_tongji/static/src/js/epidemic_tongji_page.js"/>
        </xpath>
    </template>
</odoo>

清單關聯檔案中:

'qweb': ['static/src/xml/epidemic_tongji_page']
'data': ['views/epidemic_tongji_page_view.xml', 
	       'views/templates.xml',
		   'views/menu_views.xml']

最後 重啟、更新模組,你會發現頁面已經載入好了