我需要删除(或隐藏)菜单项。 我想这应该用继承和xpath来完成。
但我不确定应该使用哪个名称,型号和inherit_id。我在哪里可以找到正确的值?
我也不知道如何正确使用xpath。 据我所知,只有页面,组和字段的表达式? (http://www.odoo.yenthevg.com/xpath-expressions-in-odoo-8/)
在addons / product / product_view.xml中,我找到了可能与它有关的东西。
第1行:
<menuitem id="base.menu_product" name="Product Variants" parent="base.menu_base_partner" sequence="9"/>
第444-446行:
<menuitem action="variants_action"
id="menu_variants_action"
parent="product.prod_config_main" sequence="10" />
我尝试在我自己的views.xml中使菜单项不可见的方式:
<record model="ir.ui.view" id="menuproductvariants_inherit">
<field name="name">name">product.prod_config_main</field>
<field name="model">base.menu_product</field>
<field name="inherit_id" ref="product.product_template_only_form_view" />
<field name="arch" type="xml">
<xpath expr="//menuitem[@string='Product Variants']" position='replace'>
<menuitem name=""/>
</xpath>
</field>
</record>
它给出的错误:
ParseError: "ValidateError
Field(s) `arch` failed against a constraint: Invalid view definition
Error details:
Element '<xpath expr="//menuitem[@string='Product Variants']">' cannot be located in parent view
Error context:
View `name">product.prod_config_main`
[view_id: 971, xml_id: n/a, model: base.menu_product, parent_id: 257]" while parsing /root/git/odoo/modulesdewieuw/dewieuw/views.xml:59, near
<record model="ir.ui.view" id="menuproductvariants_inherit">
<field name="name">name">product.prod_config_main</field>
<field name="model">base.menu_product</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<xpath expr="//menuitem[@string='Product Variants']" position="replace">
<menuitem name=""/>
</xpath>
</field>
</record>
修改:在制作新论坛的提示后,我尝试了一下。 我创建了一个组“verborgenmenus”并添加了一个用户。
在我的xml中,我把它放在某个地方:
<menuitem id="base.menu_product" name="Product Variants" parent="base.menu_base_partner" sequence="9" groups="verborgenmenus"/>
它给了我以下错误:
raise ValueError('External ID not found in the system: %s' % (xmlid))
ParseError: "External ID not found in the system: dewieuw.verborgenmenus" while parsing /root/git/odoo/modulesdewieuw/dewieuw/views.xml:34, near
<menuitem id="base.menu_product" name="Product Variants" parent="base.menu_base_partner" sequence="9" groups="verborgenmenus"/>
我的代码有什么问题?
编辑:只需从用户/技术功能组中移除用户,我就能获得所需。
答案 0 :(得分:1)
您无法在Odoo中隐藏菜单项,就好像它是一个字段一样。您必须使用<delete id="your_module.tour_xml_id" model="ir.ui.menu"/>
标记将其删除:
groups
在不删除属性的情况下使其不可见的一种方法是将属性<menuitem id="your_module.tour_xml_id" groups="empty_group"/>
添加到menuitem,并在其中放置一个组,其组件只是可以查看menuitem的用户。如果您不希望任何用户看到它,请创建一个空组并为其分配该属性:
{{1}}
答案 1 :(得分:1)
<record id="make_invisible" model="res.groups">
<field name="name">Invisible</field>
</record>
<record model="ir.ui.menu" id="base.menu_product">
<field name="groups_id" eval="[(6,0,[ref('make_invisible')])]"/>
</record>
答案 2 :(得分:0)
您可以将其删除:
<delete model="ir.ui.menu" id="module_name.menuitem_id"/>
但它不值得推荐,因为可能其他一些模块试图访问它。您可以将其添加到管理组中,以使其对其他用户不可见:
<menuitem id="module_name.menuitem_id" parent="module_name.parent_id" sequence="1" groups="base.group_no_one"/>
<强>更新强>:
在您的情况下,menuitem的ID应为id="product.menu_products"
答案 3 :(得分:0)
<record id="hide" model="res.groups">
<field name="name">Hide</field>
<field name="comment">Hide.</field>
</record>
<menuitem id="product.menu_products" name="Product Variants" parent="base.menu_product" sequence="10" groups="hide"/>
您还需要从此菜单中删除“可用性/技术功能”..
对于Goto:设置 - &gt;用户界面 - &gt;菜单项。 搜索:产品变体 打开表单视图:从组网格中删除“可用性/技术特性”。
答案 4 :(得分:0)
实际上,给定一个menuitem,这是使用“隐藏”组隐藏菜单项的正确方法
<record model="res.groups" id="group_invisible">
<field name="name">Hidden items</field>
</record>
<record id="module_id.menu_id" model="ir.ui.menu">
<field name="groups_id" eval="[(6, False, [ref('module_id.group_invisible')])]"/>
</record>
这对我来说很好。 当然,您也可以使用它来重新定义其属性(父级,名称等等)
答案 5 :(得分:0)
BBBagdiya的答案是正确的,我只需添加name属性,因为它有一个非null约束。
代码是:
$ git status
On branch ATD-86
Untracked files:
(use "git add <file>..." to include in what will be committed)
../javaproject/
nothing added to commit but untracked files present (use "git add" to
track)
答案 6 :(得分:0)
您可以通过以下方式隐藏菜单
safe_exit: