今天請各位把基本的 action client view 建立好
接著會列出幾個目標,再來逐個達成
有些內容會跟前半個月一樣,會先請各位先完成程式後才會解釋內容
OK,那我們就開始吧
先建立一個新的 JS action_view.js
// ironman_js/static/src/js/action_view.js
odoo.define('ironman_js.action_view', function (require) {
'use strict';
const { action_registry } = require('web.core');
const AbstractAction = require('web.AbstractAction');
const IronmanActionView = AbstractAction.extend({
template: 'IronmanActionView',
});
action_registry.add('Ironman.custom_view', IronmanActionView);
return IronmanActionView;
});
接著建立 view 的模板 action_view.xml
<!-- ironman_js/static/src/xml/action_view.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<templates>
<t t-name="IronmanActionView">
<h1 class="alert alert-warning text-center">Never gonna give you up</h1>
</t>
</templates>
接著將 JS 與 XML 註冊到對應的位置
XML 屬於 qweb
的部分,因此更新 __manifest__.py
# ironman_js/__manifest__.py
{
# ...
'qweb': [
'static/src/xml/widget.xml',
'static/src/xml/action_view.xml',
],
# ...
}
JS 要綁到 assets 的定義裡
<!-- ironman_js/views/assets.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<template id="assets_backend" name="backend assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/ironman_js/static/src/js/widget.js"></script>
<script type="text/javascript" src="/ironman_js/static/src/js/action_view.js"></script>
</xpath>
</template>
</odoo>
最後還差一個步驟,需要有個選單項目可以讓我們使用此功能
而這功能需要一個 action 來指定觸發內容
所以建立一個 XML actions_and_menu.xml
(這裡有偷懶是把 action 跟 menu 放在一起,若各位想要切分也是可以,就自行處理)
<!-- ironman_js/views/actions_and_menu.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="action_ironman_client_view" model="ir.actions.client">
<field name="name">鐵人賽自定義 view</field>
<field name="tag">Ironman.custom_view</field>
</record>
<menuitem id="menu_ironman_root"
name="鐵人賽"
action="action_ironman_client_view"
groups="base.group_user"/>
<menuitem id="menu_ironman_client_view"
parent="menu_ironman_root"
name="鐵人賽自定義 view"
action="action_ironman_client_view"/>
</odoo>
一樣,views 有新增檔案,那一樣要註冊到 __manifest__.py
# ironman_js/__manifest__.py
{
'data': [
'views/assets.xml',
'views/actions_and_menu.xml',
],
}
完成後重新啟動 server,並且更新模組
接著就能看到選單有個鐵人賽的項目,點進去後看到底下畫面,即代表成功了
最後列一下目標,主要會帶各位完成一個簡易的待辦清單,
並且在畫面增加對於銷售訂單的數字呈現,並能快速跳轉到銷售訂單