Odoo - 如何将窗口操作绑定到侧边栏中的第一级菜单?

时间:2015-05-01 13:08:20

标签: odoo odoo-8

我想将窗口操作与放置在Odoo界面左侧边栏中的菜单相关联。我在顶部菜单栏中有一个名为Academy的菜单,在左侧边栏中有另一个名为“Academy Content”的菜单。这是界面的图像。

链接到图片:Menus Odoo

“学院内容”菜单中没有子项。我想将窗口操作(名为action_academy_teachers)与“Academy内容”菜单相关联。 在视图(view.xml文件)中,我定义了两个菜单。

<menuitem sequence="0" id="menu_academy" name="Academy"/>
<menuitem id="menu_academy_content" parent="menu_academy" name="Academy Content" action="action_academy_teachers"/>

问题是我无法点击“学院内容”菜单,它只是一个静态文本,而不是一个链接。 但是,如果我将一个子菜单(名为“学院教师”)添加到“学院内容”菜单中,并将窗口操作“action_academy_teachers”与“Academy Teachers”菜单相关联,则单击此菜单时会触发此窗口操作。

<menuitem sequence="0" id="menu_academy" name="Academy"/>
<menuitem id="menu_academy_content" parent="menu_academy"
          name="Academy Content"/>
<menuitem id="menu_academy_content_teachers"
          parent="menu_academy_content"
          action="action_academy_teachers" name="Academy Teachers"/>

但我希望点击“学院内容”菜单时触发“action_academy_teachers”操作。我不想创建另一个子菜单来执行此操作。

窗口操作代码:

<record id="action_academy_teachers" model="ir.actions.act_window">
  <field name="name">Academy teachers</field>
  <field name="res_model">academy.teachers</field>
</record>

其他信息
Odoo:版本8
操作系统:Ubuntu 14.04 32位

1 个答案:

答案 0 :(得分:1)

由于菜单的结构及其结构,Normaly默认情况下不起作用。

因此,您需要通过覆盖“web”模块中的“web.menu_secondary”模板来修改菜单的显示方式,以添加指向您的操作的链接。

要实现这一点,只需将此部分添加到XML文件中(或创建一个依赖于'web'模块的新模块):

<template id="menu_secondary" inherit_id="web.menu_secondary">
        <div class="oe_secondary_menu_section" position="replace">
            <div class="oe_secondary_menu_section">
                <span t-if="not menu['action']">
                    <t t-raw="menu['name']"/>
                </span>
                <span t-if="menu['action']">
                    <t t-call="web.menu_link"/>
                </span>
            </div>
        </div>
</template>

希望这有帮助!