Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vinascript/html/wp-includes/functions.php on line 6114
Widget là gì? Hướng dẫn tạo Custom Widget trong Odoo - VinaScript

Latest Post

Triển khai dự án PHP, Mysql với Nginx trên Docker Tìm hiểu về HTML – Ưu điểm, nhược điểm và cách hoạt động của HTML

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" />

Để lại một bình luậ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 *