[Odoo] Widget là gì? Hướng dẫn tạo Custom Widget trong Odoo


Một thành phần quan trọng không thể thiếu khi bạn lập trình sử dụng CMS Odoo. Đó chính là widget. Hôm nay vinasupport.com sẽ giới thiệu và hướng dẫn các bạn tạo widget đơn giản trong Odoo.

Odoo Widget là gì?

Widget là các mã code đã được tạo sẵn và được gọi 1 cách dễ dàng ở mọi nơi trên giao diện views của Odoo giúp chúng ta không phải code lại nhiề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" />

 

Nguồn: vinasupport.com

 

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web