首页IT科技odoo create(Odoo 菜单定义和修改学习总结)

odoo create(Odoo 菜单定义和修改学习总结)

时间2025-06-16 18:43:25分类IT科技浏览3907
导读:odoo菜单定义和修改学习总结 环境...

odoo菜单定义和修改学习总结

环境

odoo-14.0.post20221212.tar

定义菜单

方式1:

<?xml version="1.0"?> <odoo> <menuitem id="root_menu_id" name="TopMenu" web_icon="estate,static/img/icon.png"> <menuitem id="second_level_menu" name="SecondLevelMenu"> <menuitem id="third_level_menu1" action="third_level_menu1_action" sequence ="10"/> <menuitem id="third_level_menu2" action="third_level_menu2_action" sequence ="20"/> </menuitem> </menuitem> </odoo>

说明:

id 菜单外部ID

name

如果不指定name            ,则:

如果为菜单设置了action                 ,则获取action record定义中name字段的值作为菜单name属性的值 如果未设置菜单action      ,则获取菜单外部ID为值作为菜单name属性的值

action

打开菜单时需要执行的action的外部ID

web_icon

指定菜单图标            ,格式:模块名称,图标路径                 ,形如estate,static/img/icon.png 意为estate模块下的static/img/icon.png图标            。其中图标路径      ,一般是相对于模块根目录的相对路径

sequence

设置菜单展示顺序                 。该属性值越大      ,越靠右           、靠下方展示      。也就是说                 ,菜单从左往右           ,从上到下      ,对应sequence属性值从小到大            。

<menuitem>元素也可以放在<data>元素中                  ,形如

<?xml version="1.0"?> <odoo> <data> <menuitem id="root_menu_id" name="TopMenu" web_icon="estate,static/img/icon.png"> ... </menuitem> </data> </odoo>

groups

逗号分隔的res.groups模型的外部ID序列           ,形如groups="group_account_user,group_account_manager,group_account_invoice",表示菜单只能被group_account_user                  ,group_account_manager                 ,group_account_invoice 三个用户组访问                 。用于指定可以访问菜单的用户组      。如果外部ID以-为前缀,则从菜单组中移除该ID代表的组            ,注意                 ,如果指定用户组不是在当前模块中定义的      ,需要指定所在模块名称            ,形如estate.group_estate_property_root_menu      。

示例:

<?xml version="1.0"?> <odoo> <data> <menuitem id="root_menu_id" name="TopMenu" web_icon="estate,static/img/icon.png" groups="group_estate_property_root_menu"> ... </menuitem> </data> </odoo>

方式2:通过parent来设置菜单层级

<?xml version="1.0"?> <odoo> <menuitem id="root_menu_id" name="TopMenu" web_icon="estate,static/img/icon.png"/> <menuitem id="second_level_menu" name="SecondLevelMenu" parent="root_menu_id"/> <menuitem id="third_level_menu1" action="third_level_menu1_action" sequence ="10" parent="second_level_menu"/> <menuitem id="third_level_menu2" action="third_level_menu2_action" sequence ="20" parent="second_level_menu"/> </odoo>

说明:

parent

指定父级菜单外部ID                 ,如果上级菜单不在当前模块中      ,则需要指定上级菜单所在模块      ,形如parent="moduleName.parent_menu_id"

修改菜单

本节要介绍的是一种特殊的修改方式                 ,并不是直接修改原有菜单定义                 。这种修改方式之所以特殊           ,是因为它不修改原有菜单的定义      ,而是通过重新定义菜单来修改                  ,可以简单的类比为“继承            ”           ,具体做法如下:

定义一个新的菜单<menuitem>,将其id属性值设置为原有菜单所在模块名称及其id属性值的组合                  ,形如:moduleName.source_menu_id(参见下述示例)                 ,如果新的菜单和原有菜单在同一个模块,可以省略moduleName.           。

修改相关菜单属性值为目标值(如果需要的话)

示例:重新定义purchase.menu_purchase_root菜单名称

<menuitem id="purchase.menu_purchase_root" name="omsPurchase"/>

以新定义的菜单为父级菜单            ,添加子菜单(如果需要的话)                 ,添加方式可以参考上文所述      ,需要注意的是            ,不管采用哪种方式                 ,原有菜单的子菜单依然存在      ,并显示为新定义菜单的子菜单

隐藏原有菜单的子菜单(如果需要的话)

定义一个<record>      ,将其id设置为要隐藏的子菜单所在模块名称及id属性值的组合                 ,形如:moduleName.source_menu_id           ,如果新的菜单和原有菜单在同一个模块      ,可以省略moduleName.      。

将其model设置为"ir.ui.menu"

添加子元素 <field name="active" eval="False"></field>                  ,其中eval=False则表示隐藏           ,eval=True表示显示

<?xml version="1.0"?> <odoo> ... <record id="purchase.sub_menu_purchase" model="ir.ui.menu"> <field name="active" eval="False"></field> </record> </odoo>

参考连接

https://www.odoo.com/documentation/14.0/zh_CN/developer/reference/addons/data.html#shortcuts

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
计时器响声(计时器一直循环无法清除的问题) yolov5训练自己的模型(YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面))