Odoo 14 Web 服务通过外部 API (XMLRPC) 使用 PHP / Laravel
Odoo 14 Webservices through External API (XMLRPC) using PHP / Laravel
我想使用 PHP 作为 Odoo 文档(Odoo 外部 API)示例的 Odoo 网络服务,link 在这里:Odoo External API
我已经在上面的页面上尝试了 python 示例,它工作正常......甚至来自另一台机器的相同虚拟机(两个虚拟机都是 Ubuntu 18.04 桌面, 运行ning Odoo 14) 我对 PHP 中的 using/writing 代码一无所知,在我的 Windows 主机上,我已下载 XAMPP 便携式 ,在 php.ini 中启用 xmlrpc,通过 composer 安装 ripcord 库(因为它在 PHP 上述官方指南中的示例)启动 XAMPP 控制器 + Apache,在 d:\xampp\htdocs\mytest\test.php 中创建了一个 .php 文件,代码如下:
<?php
//url = my ubuntu vm ipv4 with odoo default port
$url = "http://192.168.18.71:8069";
$db = 'odb';
$username = 'odoouser@myhost.com';
$password = 'admin';
require_once('ripcord.php');
$common = Ripcord::client($url'/xmlrpc/2/common');
$ver = $common->version();
echo $ver;
$uid = $common->authenticate($db, $username, $password, array());
echo $uid;
?>
运行 Chrome 中的页面显示 警告:require_once(ripcord.php):无法打开流:没有这样的文件或D:\xampp\htdocs\mytest\test.php 中的目录是否还有其他我遗漏或必须 configs/settings 或我也必须具有 xmlrpc.php 的内容?如果是,应该在哪里复制?请帮忙,因为我自上周日以来一直在搜索和尝试,但仍然失败。如果需要任何相关信息,请询问是否有足够的信息来解决问题。
运行良好的最终代码,从 res_partner 检索数据 ('name')。只是通知一下,我在 ubuntu 18.04 桌面上安装了 Odoo 14,将其网络设置为 Bridge 并使用 Odo 的默认端口。在我的 Win'7 主机上 XAMPP 可移植,在 D:\xampp\htdocs\mytest 中创建了一个项目文件夹并使用 GitBash 克隆了“ripcord”库:git clone https://github.com/poef/ripcord
创建了 .php 文件(如下)并在 Chrome 中对其进行了测试,它按预期显示了来自 res_partner... 的名称列数据。
<?php
// Login information
$url = 'http://192.168.18.71:8069';
$url_auth = $url . '/xmlrpc/2/common';
$url_exec = $url . '/xmlrpc/2/object';
$db = 'odb14';
$username = 'odoouser@myhost.com';
$password = 'admin';
// Ripcord can be cloned from https://github.com/poef/ripcord
require_once('ripcord\ripcord.php');
// Login
$common = ripcord::client($url_auth);
$uid = $common->authenticate($db, $username, $password, array());
print("<p>Your current user id is '${uid}'</p>");
$models = ripcord::client($url_exec);
$models // The (Ripcord) client
->execute_kw( // Execute command
'table.reference', // Referenced model, e.g. 'res.partner' or 'account.invoice'
'search', // Search method of the referenced model
array() // Search domain
);
$customer_ids = $models->execute_kw(
$db, // DB name
$uid, // User id, user login name won't work here
$password, // User password
'res.partner', // Model name
'search', // Function name
array( // Search domain
array( // Search domain conditions
array('active', '=', true))
)
);
$customers = $models->execute_kw($db, $uid, $password, 'res.partner',
'read', // Function name
array($customer_ids), // An array of record ids
array('fields'=>array('name')) // Array of wanted fields
);
print("<p><strong>Found customers:</strong><br/>");
foreach ($customers as $customer){
print("{$customer['name']}<br/>");
}
print("</p>");
?>
编码愉快 :)
我想使用 PHP 作为 Odoo 文档(Odoo 外部 API)示例的 Odoo 网络服务,link 在这里:Odoo External API
我已经在上面的页面上尝试了 python 示例,它工作正常......甚至来自另一台机器的相同虚拟机(两个虚拟机都是 Ubuntu 18.04 桌面, 运行ning Odoo 14) 我对 PHP 中的 using/writing 代码一无所知,在我的 Windows 主机上,我已下载 XAMPP 便携式 ,在 php.ini 中启用 xmlrpc,通过 composer 安装 ripcord 库(因为它在 PHP 上述官方指南中的示例)启动 XAMPP 控制器 + Apache,在 d:\xampp\htdocs\mytest\test.php 中创建了一个 .php 文件,代码如下:
<?php
//url = my ubuntu vm ipv4 with odoo default port
$url = "http://192.168.18.71:8069";
$db = 'odb';
$username = 'odoouser@myhost.com';
$password = 'admin';
require_once('ripcord.php');
$common = Ripcord::client($url'/xmlrpc/2/common');
$ver = $common->version();
echo $ver;
$uid = $common->authenticate($db, $username, $password, array());
echo $uid;
?>
运行 Chrome 中的页面显示 警告:require_once(ripcord.php):无法打开流:没有这样的文件或D:\xampp\htdocs\mytest\test.php 中的目录是否还有其他我遗漏或必须 configs/settings 或我也必须具有 xmlrpc.php 的内容?如果是,应该在哪里复制?请帮忙,因为我自上周日以来一直在搜索和尝试,但仍然失败。如果需要任何相关信息,请询问是否有足够的信息来解决问题。
运行良好的最终代码,从 res_partner 检索数据 ('name')。只是通知一下,我在 ubuntu 18.04 桌面上安装了 Odoo 14,将其网络设置为 Bridge 并使用 Odo 的默认端口。在我的 Win'7 主机上 XAMPP 可移植,在 D:\xampp\htdocs\mytest 中创建了一个项目文件夹并使用 GitBash 克隆了“ripcord”库:git clone https://github.com/poef/ripcord
创建了 .php 文件(如下)并在 Chrome 中对其进行了测试,它按预期显示了来自 res_partner... 的名称列数据。
<?php
// Login information
$url = 'http://192.168.18.71:8069';
$url_auth = $url . '/xmlrpc/2/common';
$url_exec = $url . '/xmlrpc/2/object';
$db = 'odb14';
$username = 'odoouser@myhost.com';
$password = 'admin';
// Ripcord can be cloned from https://github.com/poef/ripcord
require_once('ripcord\ripcord.php');
// Login
$common = ripcord::client($url_auth);
$uid = $common->authenticate($db, $username, $password, array());
print("<p>Your current user id is '${uid}'</p>");
$models = ripcord::client($url_exec);
$models // The (Ripcord) client
->execute_kw( // Execute command
'table.reference', // Referenced model, e.g. 'res.partner' or 'account.invoice'
'search', // Search method of the referenced model
array() // Search domain
);
$customer_ids = $models->execute_kw(
$db, // DB name
$uid, // User id, user login name won't work here
$password, // User password
'res.partner', // Model name
'search', // Function name
array( // Search domain
array( // Search domain conditions
array('active', '=', true))
)
);
$customers = $models->execute_kw($db, $uid, $password, 'res.partner',
'read', // Function name
array($customer_ids), // An array of record ids
array('fields'=>array('name')) // Array of wanted fields
);
print("<p><strong>Found customers:</strong><br/>");
foreach ($customers as $customer){
print("{$customer['name']}<br/>");
}
print("</p>");
?>
编码愉快 :)