从OpenERP中的按钮启动向导

时间:2012-07-26 02:43:18

标签: xml button wizard openerp

我正在尝试从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),我尝试使用上面定义的任何一个动作,都具有相同的结果。如果我输入一个不好的动作名称,我会收到错误,但这就是它。从这里开始的任何想法?

2 个答案:

答案 0 :(得分:6)

在您的按钮定义中,将$(...)d替换为%(...)d

XML_ID替换使用百分号,而不是美元符号。

顺便说一下,你不需要第一个act_window。定义act_window到记录标记不会创建侧边栏链接;您必须使用快捷标记<act_window>或添加带有ir_value记录的侧栏链接。第二个act_windowaction_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。

问候。