我正在尝试从OpenERP中的按钮调用的动作启动向导。我可以使用侧面菜单按钮启动向导,但每当我在按钮中使用动作时,我只会刷新一些,而不会打开新的表单。
该向导非常基本。这是代码:
wizard.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_res_partner_add_terminal_wizard" model="ir.ui.view">
<field name="name">res.partner.terminal.form</field>
<field name="model">res.partner.terminal</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Add terminal">
<group colspan="4" >
<separator string="Select terminals to assign" colspan="4"/>
<field name="terminal_id" string="Terminals" domain="[('state','=','available')]"/>
<newline/>
</group>
<separator string="" colspan="4" />
<group colspan="4" col="6">
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
<button icon="gtk-ok" name="add_terminal" string="Assign Terminal" type="object"/>
</group>
</form>
</field>
</record>
<record id="action_res_partner_terminal" model="ir.actions.act_window">
<field name="name">Assign Terminal</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner.terminal</field>
<field name="src_model">res.partner</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_res_partner_add_terminal_wizard"/>
<field name="target">new</field> -->
<field name="key2">client_action_multi</field>
</record>
<act_window id="action_res_partner_terminal_wizard"
name="Assign Terminal"
res_model="res.partner.terminal"
src_model="res.partner"
view_mode="form"
key2="client_action_multi"
target="new"
/>
</data>
</openerp>
我有按钮的代码:
<button name="$(universal_account.action_res_partner_terminal_wizard)d" string="Assign Terminal" type="action" />
我已经尝试将直接的XML ID放在那里(没有$()d),我尝试使用上面定义的任何一个动作,都具有相同的结果。如果我输入一个不好的动作名称,我会收到错误,但这就是它。从这里开始的任何想法?
答案 0 :(得分:6)
在您的按钮定义中,将$(...)d
替换为%(...)d
。
XML_ID替换使用百分号,而不是美元符号。
顺便说一下,你不需要第一个act_window
。定义act_window
到记录标记不会创建侧边栏链接;您必须使用快捷标记<act_window>
或添加带有ir_value
记录的侧栏链接。第二个act_window
(action_res_partner_terminal_wizard
)将创建侧边栏链接并用于按钮操作。
答案 1 :(得分:-2)
您的wizard.xml应如下所示:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_res_partner_add_terminal_wizard" model="ir.ui.view">
<field name="name">res.partner.terminal.form</field>
<field name="model">res.partner.terminal</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Add terminal">
<group colspan="4" >
<separator string="Select terminals to assign" colspan="4"/>
<field name="terminal_id" string="Terminals" domain="[('state','=','available')]"/>
<newline/>
</group>
<separator string="" colspan="4" />
<group colspan="4" col="6">
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
<button icon="gtk-ok" name="add_terminal" string="Assign Terminal" type="object"/>
</group>
</form>
</field>
</record>
<record id="action_res_partner_terminal" model="ir.actions.act_window">
<field name="name">Assign Terminal</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner.terminal</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_res_partner_add_terminal_wizard"/>
<field name="target">new</field>
</record>
</data>
</openerp>
和On View按钮应定义如下
<button name="$(universal_account.action_res_partner_terminal)d"
string="Assign Terminal"
type="action"
help="Assign Terminal"/>
您必须在按钮操作上定义ir.actions.act_window
的XML ID,而不是act_window
xml id。
问候。