当前位置:   article > 正文

odoo 视图继承_odoo视图继承

odoo视图继承

odoo 视图继承

表单,列表和搜索视图是使用arch XML结构定义的,要扩展视图,我们需要一种方法来修改这个XML。这意味着需要定位XML中的元素位置,然后在这些位置引入修改。

对于XML,在其中定位元素的最好方法是使用XPath表达式,如果XPath表达式匹配到多个元素,只有第一个元素会被修改。

因此,表达式应该使用独特的属性以使其指定尽可能具体,使用name属性是确保我们找到扩展点的确切xml元素的最简单方法。 因此,在我们的视图XML元素上定义name属性是很重要的。
Xpath表达式的格式:expr=“//标签名[@属性]=‘属性值’” 意思是:找到 属性=属性值 的标签的位置。

下面是一个写在arch中的实现在is_done字段之前添加date_deadline字段的具体例子:

<xpath expr="//field[@name]='is_done'" position="before"> //expr属性值的意思是:找到<filed name="is_done"/>的标签
       <field name="date_deadline" />
</xpath> 
  • 1
  • 2
  • 3

Odoo为此提供了快捷符号,因此大多数时候我们可以完全避免XPath语法。 我们仅使用要定位的元素的特定属性及定位类型相关信息就可以了。

 <field name="is_done" position="before">
      <field name="date_deadline" />
  </field> 
  • 1
  • 2
  • 3

【如果字段在同一视图中多次出现,则应始终使用XPath语法。】

position属性是可选的:

after:将内容添加到父元素之中,匹配的节点之后。
before:添加内容在匹配节点之前。
inside(默认值):匹配节点内的追加内容。
replace:替换匹配的节点。如果使用空内容,它将删除该匹配的元素。
attributes:修改匹配元素的XML属性。在元素内容使用<attribute name =“attr-name”>实现给标签设置新属性值attr-name。
  • 1
  • 2
  • 3
  • 4
  • 5
1.如果<attribute></attribute>之间有值,就在匹配的节点上添加以name命名的、以内容主体为值的属性或是修改原同名属性值。
2.如果<attribute></attribute>没有值,就将匹配节点上名字为name的属性删除,如果原节点上没有对应的属性,抛出一个错误。
  • 1
  • 2

下面是视图继承的模版写法:
1)扩展表单视图

<record id="view_form_模块名_inherited" model="ir.ui.view">
       <field name="name">模块名_extension</field>
       <field name="model">模型名</field>
       <field name="inherit_id" ref="模块_模型.被继承的form表单id"/>
       <field name="arch" type="xml"> //在arch中进行扩展操作:定位—>插入/修改
           <field name="定位标签name" position="在标签的哪里进行扩展">
               <field ......> //扩展内容
           </field>
       </field>
</record> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2)扩展列表视图

   <record id="view_tree_模型名_inherited" model="ir.ui.view">
       <field name="name">模型名 extension</field>
       <field name="model">模型</field>
       <field name="inherit_id" ref="被继承的tree视图id"/>
       <field name="arch" type="xml">//在arch中进行扩展
            <field name="定位标签name" position="扩展位置"> 
                <field ....进行扩展 />
            </field>
       </field>
    </record>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3)扩展搜索视图

  <record id="view_filter_模型名_inherited" model="ir.ui.view">
       <field name="name">xxxextension</field>
       <field name="model">模型名</field>
       <field name="inherit_id" ref="被继承的搜索视图id"/>
       <field name="arch" type="xml"> //下面进行定位、扩展举例
           <field name="定位的标签name" position="after">
               //引入的修改,可以是增加过滤field,也可以定义 filter
           </field> 
       </field>
    </record> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/230862
推荐阅读
  

闽ICP备14008679号