gpt4 book ai didi

php - 通过 XMLRPC 调用方法 - Odoo v9

转载 作者:行者123 更新时间:2023-11-29 18:46:03 36 4
gpt4 key购买 nike

我在自定义模型上有一个简单的函数,可以根据 xmlrpc(带有 ripcord 库的 PHP)传递的信息创建记录,但是当我执行 php 时,odoo 控制台返回以下错误:

"cannot marshal recursive dictionaries" TypeError: cannot marshalrecursive dictionaries "

我传递的数据是存储在数据库文本字段中的“Json”,因此首先我解析查询并从数据库获取数据,然后尝试通过 XMLRPC 将其发送到 Odoo

这是我的代码:

t_form_main模型

class t_form_main(models.Model):
_name = "t_form_main"
_rec_name = "form_uid"
_order = "form_uid"
form_uid = fields.Char(string="ID",required=True)
json_string = fields.Text(string="JSON_original", required=True)

@api.one
def infoReceptor(self,info_uid,json_data):
vals = {}
vals['form_uid'] = info_uid
vals['json_string'] = json_data
return super(t_form_main,self).create(vals)

我用来调用 XMLRPC 的 php 语句:

  $insert =   $models->execute_kw($db, $uid, $password,'t_form_main','infoReceptor', array(self,"UID",$data));

将 $data 视为存储此查询中的数据的变量:

$query      =   "SELECT raw_json FROM json_archive";
$result = $mysqlconn->query($query);
$row = $result->fetch_array(MYSQLI_ASSOC);
<小时/>

解决方案

代码是正确的,问题是由数据库编码中的问题引起的,感谢 Phillip Stack 在返回我的函数时提供的建议。

最佳答案

当返回创建函数的响应时,您需要使用 @api.returns 修饰模型的创建函数,并使用 lambda 函数返回新创建的记录的记录 ID。在您的情况下,如果您不想这样做,我会将 .id 添加到返回行的末尾。

return super(t_form_main,self).create(vals).id

关于php - 通过 XMLRPC 调用方法 - Odoo v9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44640434/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com