有没有办法在Odoo 16中使用password =“1”和widget =“CopyClipboardChar”?

问题描述 投票:0回答:1

我正在尝试在 Odoo 16 中构建一个功能,我需要使用密码=“1”来屏蔽特定字段。同时,我想通过使用 widget="CopyClipboardChar" 为该屏蔽字段提供剪贴板复制功能。但是,我很难让两者一起工作。

有人遇到过这个问题并找到解决方案吗?任何见解或解决方法将不胜感激。

widget copy-paste odoo-16
1个回答
0
投票

您可以将

isPassword
属性从
CopyClipboardChar
传递到
charField
小部件

示例

更改

CopyClipboardChar
组件:

/** @odoo-module **/

import {patch} from "@web/core/utils/patch";
import { registry } from "@web/core/registry";
import { CopyClipboardCharField } from "@web/views/fields/copy_clipboard/copy_clipboard_field"
import { archParseBoolean } from "@web/views/utils";


CopyClipboardCharField.props = {
    ...CopyClipboardCharField.props,
    isPassword: { type: Boolean, optional: true },
};

CopyClipboardCharField.extractProps = ({ attrs, field }) => {
    return {
        isPassword: archParseBoolean(attrs.password),
    };
};

patch(CopyClipboardCharField.prototype, "CopyClipboardCharField.password", {
    get isPassword() {
        return this.props.isPassword;
    }
});

更改

web.CopyClipboardField
模板以使用
isPassword
功能:

<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">

    <t t-inherit="web.CopyClipboardField" t-inherit-mode="extension" owl="1">
        <xpath expr="//Field" position="attributes">
            <attribute name="isPassword">isPassword</attribute>
        </xpath>
    </t>
    
</templates>

将文件添加到清单文件中:

'assets': {
    'web.assets_backend': [
        'MODULE_NAME/static/src/js/copy_clipboard_char.js',
        'MODULE_NAME/static/src/xml/copy_clipboard_char.xml',
    ],
},
© www.soinside.com 2019 - 2024. All rights reserved.