请写一个在odoo16弹出对话框点击按钮再弹出一个顶层对话框并全屏显示新的对话框的代码
时间: 2023-05-27 22:02:21 浏览: 164
在对话框中点击按钮弹出另外一个对话框
4星 · 用户满意度95%
以下是在Odoo 16中创建弹出对话框并点击按钮弹出顶层对话框的示例代码:
在.py文件中:
```
from odoo import api, fields, models
class MyWizard(models.TransientModel):
_name = 'my.wizard'
name = fields.Char('Name')
@api.multi
def action_open_dialog(self):
return {
'type': 'ir.actions.act_window',
'res_model': 'my.dialog',
'view_mode': 'form',
'target': 'new',
'context': {
'default_name': self.name
}
}
class MyDialog(models.TransientModel):
_name = 'my.dialog'
name = fields.Char('Name')
@api.multi
def action_fullscreen(self):
return {
'name': 'Full Screen Dialog',
'type': 'ir.actions.act_window',
'res_model': 'my.fullscreen',
'view_mode': 'form',
'target': 'new',
'context': {
'default_name': self.name
}
}
class MyFullscreen(models.TransientModel):
_name = 'my.fullscreen'
name = fields.Char('Name')
```
在.xml文件中:
```
<odoo>
<data>
<record id="view_my_wizard" model="ir.ui.view">
<field name="name">my.wizard.form</field>
<field name="model">my.wizard</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="My Wizard">
<header>
<button name="action_open_dialog" string="Open Dialog" type="object" class="btn-primary"/>
</header>
<group>
<field name="name"/>
</group>
</form>
</field>
</record>
<record id="view_my_dialog" model="ir.ui.view">
<field name="name">my.dialog.form</field>
<field name="model">my.dialog</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="My Dialog">
<header>
<button name="action_fullscreen" string="Full Screen" type="object" class="btn-secondary"/>
</header>
<group>
<field name="name"/>
</group>
</form>
</field>
</record>
<record id="view_my_fullscreen" model="ir.ui.view">
<field name="name">my.fullscreen.form</field>
<field name="model">my.fullscreen</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="My Full Screen" fullscreen="true">
<group>
<field name="name"/>
</group>
</form>
</field>
</record>
<record id="action_my_wizard" model="ir.actions.act_window">
<field name="name">My Wizard</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">my.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</odoo>
```
在上面的代码中,我们首先定义了MyWizard,MyDialog和MyFullscreen三个TransientModel。MyWizard是弹出对话框的主要模型,MyDialog和MyFullscreen分别是两个堆叠的对话框。然后,我们创建了三个XML视图:view_my_wizard,view_my_dialog和view_my_fullscreen。视图view_my_wizard包含一个按钮,用于在MyWizard中打开对话框。视图view_my_dialog包含一个按钮,用于在MyDialog中全屏显示对话框。视图view_my_fullscreen是用于完全覆盖屏幕的对话框。
我们还定义了一个名称为action_my_wizard的动作,用于在Odoo应用程序中注册MyWizard。
最后,我们可以通过单击按钮打开调用操作action_open_dialog弹出MyDialog。单击MyDialog中的按钮调用操作action_fullscreen,这将在MyFullscreen中打开完全覆盖屏幕的对话框。
阅读全文