Правильное использование t-attf-класса для отключения кнопки в заголовке кнопок с помощью Odoo - PullRequest
0 голосов
/ 27 марта 2020

Я пытался использовать t-attf-class для отключения кнопки в разделе header в Odoo (v11). Я создал кнопку в заголовке в файле вида xml и связал ее с действием в модели, действие работает отлично. Я пытаюсь отключить кнопку, основываясь на условии state объекта, я нашел в источнике Odoo следующий шаблон:

<t t-name="FieldStatus.content.button">
    <t t-set="disabled" t-value="!clickable || i.selected"/>
    <button type="button" t-att-data-value="i.id" t-att-disabled="disabled ? 'disabled' : undefined"
        t-attf-class="btn btn-sm o_arrow_button btn-#{i.selected ? 'primary' : 'default'}#{disabled ? ' disabled' : ''}">
        <t t-esc="i.display_name"/>
    </button>
</t>

Поэтому я пытаюсь сделать то же самое для этого кнопка:

<form string="Form Name">
<header>
...
<button name="action_delete" string="Delete" type="object" t-attf-class="btn-danger #{state == 'done'?' disabled': ''}" t-att-disabled="state == 'done' ? 'disabled': undefined"/>
...
</header>

модель содержит поле state, которое принимает одно из значений: ['draft', 'pending', 'done'] Это действие action_delete определено в модели и работает нормально. Я попытался использовать <attribute> внутри кнопки и атрибут t-if внутри и снаружи кнопки без удачи.

PS Этот вопрос отличается и ответ не работает в этом случае, также это может быть достигнуто с помощью атрибута invisible, который намного проще, но мы не хотим этого делать.

1 Ответ

0 голосов
/ 27 марта 2020

Почему бы просто не использовать способ Odoo по умолчанию, сделав его невидимым в некоторых штатах?

<button name="action_delete" string="Delete" type="object"
    attrs="{'invisible': [('state', 'in', ['state1', 'state2'])]}" />
...