Một yếu tố quan trọng mà bạn không thể bỏ qua khi bạn làm việc với hệ thống quản lý nội dung (CMS) Odoo là sử dụng các widget. Trong bài viết này, chúng tôi sẽ giới thiệu và hướng dẫn bạn cách tạo một widget đơn giản trong Odoo.
Odoo Widget là gì?
Widget là những đoạn mã đã được xây dựng trước và có thể dễ dàng sử dụng trên giao diện của Odoo, giúp tiết kiệm thời gian và công sức khi bạn không cần phải viết mã từ đầu.
Danh sách các Odoo Widget
Odoo base hỗ trợ rất nhiều các widget để bạn lựa chọn. Ví dụ:
- badge
- remaining_days
- color_picker
- char_emojis / text_emojis
- forecast_widget
- many2one_avatar_employee
- priority
- product_discount
- list_activity
- kanban_activity
- account_resequence_widget
- …
Hướng dẫn tạo một custom widget
Đây là 1 ví dụ mình viết để tạo 1 widget đơn giản, kế thứa widget field float của odoo. Mục định là trường hợp dữ liệu float có giá trị là 0 thì sau khi sử dụng widget sẽ hiển thị là trống (empty)
Bước 1: Tạo 1 file js ở thư mục my_addon/static/src/js/hide_zero_float.js có nội dung sau:
/** @odoo-module **/ "use strict"; var basicFields = require('web.basic_fields'); var fieldRegistry = require('web.field_registry'); var FloatHideZero = basicFields.FieldFloat.extend({ _renderReadonly: function() { this._super.apply(this, arguments); if (this.value === 0) { this.$el.text(""); } }, }); fieldRegistry.add('float_hide_zero', FloatHideZero);
Bước 2: Thêm file ở trong __manifest__.py của module.
'assets': { 'web.assets_backend': [ 'my_addon/static/src/js/float_hide_zero.js', ], },
Bước 3: Khi gọi field float trong views chúng ta thêm thuộc tính widget=’float_hide_zero’
<field name="total" widget="float_hide_zero" />