Odoo 10 Learnodoo 10 中文文档odoo

odoo V10中文参考手册(三:Actions)

2017-04-10  本文已影响1463人  XiaoHaiYang

action简介

actions定义了系统对于用户的操作的响应:登录、按钮、选择项目等,action可以保存在数据库或在按钮方法中以数据字典的形式返回。每个action有两个必选属性:

客户端可以通过4种形式来获取action

窗口Action(ir.actions.act_window )

最常用的action类型,用于将model的数据展示出来

字段列表:
1.res_model -- 需要在view里显示数据的model
2.views -- 一个(view_id, view_type) 列表,view_type代表视图类型如:form,tree,gragh...,view_id是可选的数据库id或False,如果没有指定id,客户端会自动用fields_view_get()获取相应类型的默认视图,type参数列表的第一个会被默认用来展示
3.res_id (可选) -- 当默认的视图类型是form时,可用于指定加载的数据
4.search_view_id (可选) -- (id, name),id是储存在数据库的搜索视图,默认会读取model的默认搜索视图
5.target (可选) -- 定义视图是 在当前视图上打开(current)、使用全屏模式(fullscreen)、使用弹出框(new)、可使用main代替current来清除面包屑导航
6.context (可选) -- 额外的需要传给视图的环境数据
7.domain (可选) -- 自动添加到视图搜索中的查询
8.limit (可选) -- 在客户端显示的数据量,默认80
9.auto_search(可选) -- 搜索是否在加载默认视图后立即执行,默认True

#用列表和表单视图来打开customer按钮
{
    "type": "ir.actions.act_window",
    "res_model": "res.partner",
    "views": [[False, "tree"], [False, "form"]],
    "domain": [["customer", "=", true]],
}

#在新的对话框中打开一个指定产品的表单
{
    "type": "ir.actions.act_window",
    "res_model": "product.product",
    "views": [[False, "form"]],
    "res_id": a_product_id,
    "target": "new",
}

保存在数据库里窗口action有一些不同的需要被客户忽略的字段,大多数情况下用来组成视图列表

<record model="ir.actions.act_window" id="test_action">
    <field name="name">A Test Action</field>
    <field name="res_model">some.model</field>
    <field name="view_mode">graph</field>
    <field name="view_id" ref="my_specific_view"/>
</record>
#默认使用my_specific_view,即使它不是对应模型的默认视图

服务端组合视图的步骤:

链接Action(ir.actions.act_url)

可以通过odoo的链接打开一个网站页面,可通过两个字段来自定义:

{
    "type": "ir.actions.act_url",
    "url": "http://odoo.com",
    "target": "self",
}

服务器Action (ir.actions.server)

可以通过action定位来触发复杂的服务端代码,需要两个与客户端相关的字段:

动作类型是可以随意扩展的,默认的动作类型:

<record model="ir.actions.server" id="print_instance">
    <field name="name">Res Partner Server Action</field>
    <field name="model_id" ref="model_res_partner"/>
    <field name="code">
        raise Warning(object.name)
    </field>
</record>

# 在code片段中可以定义一个action变量,会被返回给客户端用于指定下一个执行的action
<field name="code">
    if object.some_condition():
        action = {
            "type": "ir.actions.act_window",
            "view_mode": "form",
            "res_model": object._name,
            "res_id": object.id,
        }
</field>

上下文环境

有些键在上下文环境和服务端action里是可用的:

报表Action (ir.actions.report.xml)

此action为打印报表的触发器

客户端Actions (ir.actions.client)

触发一个完全在客户端实现的action

#例:打开一个pos界面,不需要服务端知道它是如何运行的
{
    "type": "ir.actions.client",
    "tag": "pos.ui"
}

译自odoo官方文档:http://www.odoo.com/documentation/10.0/reference/actions.html,欢迎批评指正。

内容发布自http://www.jianshu.com/u/6fdae8ec06bc,转载请注明出处

上一篇 下一篇

猜你喜欢

热点阅读