odoo12 View翻译

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41317565/article/details/86642044

共同结构

视图对象公开了许多字段,除非另有说明,否则它们是可选的。

name (强制)
仅在某种列表中查找一个时,它仅用作视图的助记符/描述
model
链接到视图的模型(如果适用)(不适用于QWeb视图)
priority
客户端程序可以通过id或通过提出请求(model, type)。对于后者,将搜索正确类型和模型的所有视图,并priority返回编号最小的视图(它是“默认视图”)。

priority还定义了视图继承期间的应用程序顺序

arch
视图布局的描述
groups_id
Many2many 允许查看/使用当前视图的组的字段
inherit_id
当前视图的父视图,请参阅继承,默认情况下未设置
mode
继承模式,请参阅继承。如果 inherit_id未设置,mode则只能是primary。如果 inherit_id设置,extension默认情况下可以显式设置为primary
application
定义可切换视图的网站功能。默认情况下,始终应用视图
banner_route
要获取并预先添加到视图的路由地址。

如果设置了此属性, 则将获取控制器路径URL并显示在视图上方。来自控制器的json响应应包含“html”键。

如果html包含样式表<link>标记,它将被删除并附加到<head>。

要与后端进行交互,您可以使用<a type=“action”>标记。请查看AbstractController的_onActionClicked方法的文档(addons / web / static / src / js / views / abstract_controller.js)以获取更多详细信息。

只有扩展AbstractView和AbstractController的视图才能使用此属性,如Forms,Kanban, Lists,…

例:

<tree banner_route="/module_name/hello" />
class MyController(odoo.http.Controller):
    @http.route('/module_name/hello', auth='user', type='json')
    def hello(self):
        return {
            'html': """
                <div>
                    <link href="/module_name/static/src/css/banner.css"
                        rel="stylesheet">
                    <h1>hello, world</h1>
                </div> """
        }

Inheritance

视图匹配

如果请求(model, type)视图,mode=primary则匹配具有正确模型和类型的视图以及最低优先级
当请求视图时id,如果其模式不是primary其 最接近的父模式primary匹配

视图分辨率

分辨率arch为请求/匹配的primary 视图生成最终结果:

如果视图具有父级,则完全解析父级,然后应用当前视图的继承规范
如果视图没有父级,arch则按原样使用
extension查找当前视图的具有模式的子项,并将其继承规范应用于深度优先(应用子视图,然后应用子视图,然后应用其兄弟)
应用子视图的结果产生最终结果 arch

继承规范

继承规范由元素定位器组成,以匹配父视图中的继承元素,以及将用于修改继承元素的子元素。

有三种类型的元素定位器可用于匹配目标元素:

xpath具有expr属性的元素。expr是应用于当前的XPath 表达式2arch,它找到的第一个节点是匹配
field具有name属性的元素,将第一个field 与相同的元素匹配name。匹配期间将忽略所有其他属性
任何其他元素:匹配具有相同名称和相同属性(忽略position和version属性)的第一个元素
继承规范可能有一个可选position属性,指定匹配节点应如何更改:

inside (默认)
继承规范的内容将附加到匹配的节点
replace
继承规范的内容替换匹配的节点。任何仅包含$0在规范内容中的文本节点将被匹配节点的完整副本替换,从而有效地包装匹配的节点。
after
在匹配的节点之后,继承规范的内容被添加到匹配节点的父节点
before
继承规范的内容在匹配节点之前添加到匹配节点的父节点
attributes
继承规范的内容应该是attribute具有name属性和可选主体的元素:

如果attribute元素有一个主体,name则在匹配的节点上创建一个以其命名的新属性,并将 attribute元素的文本作为值
如果attribute元素没有主体,name则从匹配节点中删除以其命名的属性。如果不存在此类属性,则会引发错误
此外,position move可以作为一个规范的一个直接子inside,replace,after或before position归因于移动节点。

<xpath  expr = “// @ target”  position = “after” > 
    <xpath  expr = “// @ node”  position = “move” /> 
</ xpath> 

<field  name = “target_field”  position = “after” > 
    <field  name = “my_field”  position = “move” /> 
</ field>

视图的规格按顺序应用。

猜你喜欢

转载自blog.csdn.net/weixin_41317565/article/details/86642044
今日推荐